2012-09-17 252 views
-4

我一直在使用下面的代碼將值插入MySQL數據庫。代碼編譯沒有錯誤消息,但只要我嘗試運行代碼,它說:將值插入數據庫

MySql.Data.MySqlClient.MySqlException:列「名稱」不能爲空

請告訴我在我的代碼中的錯誤。

下面是我使用的插入功能:

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'爲空嗎? – Msonic

回答

1

你可以重寫帶參數的驗證你的方法?這會給你一個+1到你的編程風格。另外,如果輸入不符合預期的合同,你會更快地知道。

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

好像你傳遞一個name參數是null

+0

不,我從其他前端頁面獲取參數名稱的值..我發佈了下面的代碼。plss看到 – user1678379

0

您確定名稱不爲空嗎?你不驗證你的參數。

0

嗨,我使用簡單的以下前端功能插入數據字段的值到數據訪問圖層類,它具有函數插入()...請參閱它到哪裏我錯了.... ....

嘗試

{ 


     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; 
    }