尝试使用INSERT方法但不工作

时间:2013-09-11 05:16:27

标签: c# mysql

我正在尝试在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 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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()调用。

答案 2 :(得分:0)

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

即。

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

始终调用'Dispose();'完成后,.net垃圾收集可以清理和管理资源。

答案 3 :(得分:0)

您根本不使用myInsertSQL字符串,只需设置它即可。您必须按cmd.CommandText = myInsertSQL将字符串设置为命令文本,并且必须调用方法cmd.ExecuteNonQuery()