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

考虑到这些信息,假设您的 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 是一个字符串。如果数据库将其作为 bigint,则必须进行正确的long.TryParse()调用。

于 2013-09-11T05:36:40.903 回答
1

您需要设置cmd.CommandTextmyInsertSQL

也需要打电话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 回答
0

您必须将字符串变量“myInsertSQL”分配给 cmd.CommandText,然后调用,cmd.ExecuteNonQuery();

IE

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 回答