我一直在使用以下代码将值插入MySQL数据库。代码构建时没有错误消息,但是一旦我尝试运行代码,它就说:
MySql.Data.MySqlClient.MySqlException:列'name'不能为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;
}
答案 0 :(得分:1)
你能用参数验证重写你的方法吗?这将为您的编程风格提供 +1 。如果输入没有遵循预期的合同,你会更快地知道。
public int insert (int id, string name, string sname, int marks )
{
if(name == null) throw new ArgumentNullException("name");
...
}
似乎您传递的name
参数为null
。
答案 1 :(得分:0)
你确定名字不是空的吗?你没有验证你的参数。
答案 2 :(得分:0)
您好我正在使用简单的以下前端函数将数据字段的值插入到dataaccess图层类中,该类具有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;
}