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。
答案 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
和格式化问题。