如何将自动增量值放在文本框中

时间:2016-02-06 14:46:01

标签: c# mysql

 private void button1_Click(object sender, EventArgs e)
    {
        String path = "Data Source=LOCALHOST; Initial Catalog= system; username=root; password=''";
        MySqlConnection sqlconn = new MySqlConnection(path); //communicator //constructors
        MySqlCommand sqlcomm = new MySqlCommand();
        sqlconn.Open();
        sqlcomm.CommandType = CommandType.Text;
        sqlcomm.Connection = sqlconn;
        sqlcomm.CommandText = "INSERT INTO maica (Lastname) VALUES ('" + textBox2.Text + "')";
        sqlcomm.ExecuteNonQuery();
        sqlconn.Close();
        MessageBox.Show("Record saved");

   }

这是添加按钮中的代码。在phpmyadmin中,我检查了自动增量框。每当我运行表单时,我都将textBox1(ID为空)留下,我在textBox2中输入了一个名字,即姓氏。在phpmyadmin中,ID自动增量。单击添加按钮之前textbox1的值应为0001,然后单击添加按钮后,textBox1应该有0002.如何将自动增量值放在textBox1中?这是在winform c#中。对不起英语TIA。

2 个答案:

答案 0 :(得分:0)

您需要与插入一起运行的查询。

  

SELECT LAST_INSERT_ID();

这里有一些获取ID的代码,首先在类中的某处声明一个全局String

private String entryIdString;

然后

    public int insertGetEntryID()
    {

        String sqlquery = "INSERT INTO maica (Lastname) VALUES ('" + textBox2.Text + "'); SELECT LAST_INSERT_ID();";

        SqlCommand command = new SqlCommand(sqlquery, sqlconn);
        try
        {
            sqlconn.Open();

            entryIdStr = command.ExecuteScalar().ToString();
            return int.Parse(entryIdStr);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception in DBHandler", ex);
            return -1;
        }
        finally
        {
            sqlconn.Close();
        }

    }

此方法返回一个保存表中最后一个ID的整数。现在您只需将值设置为textBox1

textBox1.Text = "ID: " + getEntryID();

或者如果您只想要ID

textBox1.Text = "" + getEntryID();

我还要告诉你Gideon关于你插入ID的说法(如果它在DB中设置为自动增量,你不需要)。

答案 1 :(得分:0)

如果您的数据库具有设置为AUTO_INCREMENT的ID列,则无需将ID的值传递到SQL Insert语句中。你可以这样做:

sqlcomm.CommandText = "INSERT INTO maica (Lastname) VALUES ('" + textBox2.Text + ')";

最好使用SqlCommand而不是字符串连接,因为它可以防止SQL注入,还可以处理Type和格式化问题。