0

insertでメソッドを使用しようとしstudentHelperClassています。フォームのボタンをクリックしてアクティブにしようとしています。テキスト ボックスで機能させる方法がわかりません。素晴らしいです。

これは私の方法です:

public static void insertStudent()
        {
            MySqlConnection conn = connection();
            conn.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = conn;
            string myInsertSQL = "INSERT INTO person(personID) ";
            cmd.Prepare();
            myInsertSQL += "VALUES (@personID)";
            cmd.Parameters.AddWithValue("@personID", "123345667788");
            prevID(conn, cmd);
        }

これが私のフォームです:

private void btnInsert_Click(object sender, EventArgs e)
                 {
                     studentHelperClass.insertStudent();
                 }

編集:

private static void prevID(MySqlConnection conn, MySqlCommand cmd)
        {
            conn.Open();
            cmd.ExecuteNonQuery();
            long studentNumber = (long)cmd.LastInsertedId;
            Console.Write("previous id {0} ", studentNumber);
            Console.ReadLine();
            conn.Close();
        }
4

4 に答える 4

1

cmd.CommandTextとして設定する必要がありますmyInsertSQL

また、呼び出す必要がありますcmd.ExecuteNonQuery()

string sql = "INSERT INTO person (personID) VALUES (@personID)";
using (MySqlConnection conn = connection())
using (MySqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.AddWithValue("@personID", personID);
    conn.Open();
    cmd.ExecuteNonQuery();
}
于 2013-09-11T05:19:00.390 に答える
1

情報を考慮して、 prevId(conn,cmd) が ExecuteNonQuery を呼び出していると仮定すると、cmd.CommandText を myInsertSql と等しくなるように設定する必要があります (他の回答が指摘しているように)。

あなたの質問に答えるために、

private void btnInsert_Click(object sender, EventArgs e)
{
    studentHelperClass.insertStudent(studentIdTextBox.Text);
}

public static void insertStudent(string studentId)
{
    MySqlConnection conn = connection();
    conn.Open();
    MySqlCommand cmd = new MySqlCommand();
    cmd.Connection = conn;
    string myInsertSQL = "INSERT INTO person(personID) ";
    cmd.Prepare();
    myInsertSQL += "VALUES (?personID)";
    cmd.CommandText = myInsertSQL;        
    cmd.Parameters.AddWithValue("?personID", studentId);
    prevID(conn, cmd);
}

また、studentId が文字列であると仮定しました。long.TryParse()データベースに bigint がある場合は、適切な呼び出しを行う必要があります。

于 2013-09-11T05:36:40.903 に答える
0

文字列変数「myInsertSQL」を cmd.CommandText に割り当ててから、cmd.ExecuteNonQuery();

いえ

cmd.CommandText = myInsertSQL;
cmd.ExecuteNonQuery();
cmd.Dispose();

常に「Dispose();」を呼び出します 終了したら、.net ガベージ コレクションがリソースをクリーンアップして管理できるようにします。

于 2013-09-11T05:23:32.913 に答える
0

myInsertSQL 文字列はまったく使用せず、設定するだけです。文字列をコマンド テキストとして設定するcmd.CommandText = myInsertSQL必要があり、メソッドを呼び出す必要がありますcmd.ExecuteNonQuery()

于 2013-09-11T05:24:07.790 に答える