2012-09-17 204 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; 
    }