2012-09-17 2 views
-4

다음 코드를 사용하여 값을 MySQL 데이터베이스에 삽입했습니다. 이 코드는 오류 메시지와 함께 빌드하지만 최대한 빨리 코드를 실행하려고 같이 말한다 :데이터베이스에 값을 입력하십시오.

MySql.Data.MySqlClient.MySqlException : 열 '이름'null 일 수 없습니다

알려주세요 내 코드의 오류.

public int insert (int id, string name, string sname, int marks) 
{ 
    string connection= ConfigurationManager.ConnectionStrings["Conn"].ConnectionString; 
     MySqlConnection con = new MySqlConnection(connection); 


    MySqlCommand com = new MySqlCommand("INSERT INTO Student_details(id,name,sname,marks) values(@id,@name, @sname, @marks)"); 

    // com.Connection = com; 
    com.Connection = con; 
    con.Open(); 

    //com.Parameters.Add("@id", id); 
    //com.Parameters.Add("@name", name); 
    //com.Parameters.Add("@sname", sname); 
    //com.Parameters.Add("@marks", marks); 
    com.Parameters.AddWithValue("@id", id); 
    com.Parameters.AddWithValue("@name", name); 
    com.Parameters.AddWithValue("@sname", sname); 
    com.Parameters.AddWithValue("@marks", marks); 
    //// com.Parameters.a 
    //com.ExecuteNonQuery(); 
    int ret = Convert.ToInt32(com.ExecuteScalar()); 

    return ret; 
} 
+3

당신이 오류 메시지에 이해하지 않는 것이 무엇을하려고? 당신은 분명히'name' 칼럼에 null을 삽입하고 있습니다 ... –

+1

'insert' 메소드를 호출 할 때, 당신의 인자'name'는 null입니까? – Msonic

답변

1

당신은 인수 검증와 방법을 다시 작성할 수 있습니다 :

여기 내가 사용하고 삽입 기능은? 이것은 프로그래밍 스타일에 +1을 줄 것입니다. 또한 입력이 예상되는 계약을 따르지 않는 경우 더 빨리 알 수 있습니다. 당신이 null있는 name 매개 변수를 전달하는 것처럼

public int insert (int id, string name, string sname, int marks) 
{ 
    if(name == null) throw new ArgumentNullException("name"); 
    ... 
} 

보인다.

+0

아니요 다른 프런트 엔드 페이지에서 매개 변수 이름의 값을 가져오고 있습니다 .i 아래 코드를 게시했습니다. – user1678379

0

확실한 이름이 null이 아니십니까? 매개 변수의 유효성을 검사하지 않습니다.

0

안녕하세요, 저는 다음과 같은 프론트 엔드 함수를 사용하여 데이터 필드의 값을 Insert() 함수가있는 데이터 액세스 레이어 클래스에 삽입합니다. ....

{ 


     DataAccessLayer dal = new DataAccessLayer(); 
     int id = 23; 
     string name = "mayank"; 
     string sname = "agarwal"; 
     int marks = 34; 
     int a = dal.insert(id, name, sname, marks); 
     LblUserName.Text = a.ToString(); 

    } 
    catch (Exception ex) 
    { 
     Console.Write(ex.Message.ToString()); 
      throw; 
    } 
관련 문제