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

3 回答 3

1

你能用参数验证重写你的方法吗?这会给你的编程风格+1 。另外,如果输入不符合预期的合同,您会更快地知道。

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

好像您正在传递一个name参数,即null.

于 2012-09-17T18:38:26.937 回答
0

嗨,我正在使用简单的以下前端函数将数据字段的值插入具有函数 Insert() 的数据访问层类中......请注意我哪里出错了......

try
{
    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;
}
于 2012-09-19T07:22:37.430 回答
0

你确定名字不为空吗?你不验证你的参数。

于 2012-09-17T18:38:30.603 回答