-4

次のコードを使用して、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;
}
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

名前が null でないことを確認しますか? パラメータを検証しません。

于 2012-09-17T18:38:30.603 に答える