int hid = 0;
int hid_auto = 0;
//Đổ dữ liệu
//HID
if (conn_class.OpenConnection() == true)
{
MySqlCommand hid_sql = new MySqlCommand("SELECT MAX(hid) FROM hotel", conn_class.connection);
hid = Convert.ToInt16(hid_sql.ExecuteScalar());
hid_auto = hid + 1;
conn_class.CloseConnection();
}
txt_Hid.Text = hid_auto.ToString();
//code that insert new record into database successfully
....... 更新:插入声明
if (general.TestEmail.IsEmail(txt_Email.Text) == true)
{
//Insert dữ liệu vào database
email = txt_Email.Text;
MySqlCommand them_hotel = new MySqlCommand("INSERT INTO quan_li.hotel (hid, name, star, address, province, phone, fax, email) VALUES (@hid, @name, @star, @address, @province, @phone, @fax, @email)");
them_hotel.CommandType = CommandType.Text;
them_hotel.Connection = conn_class.connection;
them_hotel.Parameters.AddWithValue("@hid", txt_Hid.Text);
them_hotel.Parameters.AddWithValue("@name", txt_Ten.Text);
them_hotel.Parameters.AddWithValue("@star", txt_Sao.Text);
them_hotel.Parameters.AddWithValue("@address", txt_DiaChi.Text);
them_hotel.Parameters.AddWithValue("@province", txt_Tinh.Text);
them_hotel.Parameters.AddWithValue("@phone", txt_DienThoai.Text);
them_hotel.Parameters.AddWithValue("@fax", txt_Fax.Text);
them_hotel.Parameters.AddWithValue("@email", txt_Email.Text);
conn_class.OpenConnection();
them_hotel.ExecuteNonQuery();
conn_class.CloseConnection();
thanh_cong = "Đã thêm khách sạn thành công";
}
我想找到列hid的MAX()值然后加1并发送到文本框。此事件在按钮中,但第二次按下该按钮时,该值始终显示为第一次按下按钮。
例: 1st:MAX()= 9 - > +1 - > 10在文本框中。 - >将10插入数据库 第二个... n:10在文本框中,10个插入数据库(2行具有相同的值)。
如何从数据库中的MAX()值+1?
谢谢你的帮助。
P / s:抱歉我的英语不好。
答案 0 :(得分:0)
如果您正在计算geting max并为其添加一个,然后将其保存回dB只是为了将主要密钥保存回来并增加一个值,那么您应该选择AUTO-INCREMENT LIKE。它的语法如下:
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
它将自动将值保存到该字段,增量为1,并在保存新记录时保存,在保存为dB时,不需要在查询中传递该自动增量fild。
答案 1 :(得分:0)
我读了你写的所有内容,包括在评论中。
您看起来有一个表单,其中包含与表中的hid字段相关的字段。您正试图向正在使用该表单的人显示下一个ID(hid)的值。
好吧,你可以显示ID(hid)的值,但是知道你的表有一个自动增量的隐藏,那么你不需要在插入时包含字段hid。
应该是这样的:
if (general.TestEmail.IsEmail(txt_Email.Text) == true)
{
//Insert dữ liệu vào database
email = txt_Email.Text;
MySqlCommand them_hotel = new MySqlCommand("INSERT INTO quan_li.hotel (name, star, address, province, phone, fax, email) VALUES (@name, @star, @address, @province, @phone, @fax, @email)");
them_hotel.CommandType = CommandType.Text;
them_hotel.Connection = conn_class.connection;
//them_hotel.Parameters.AddWithValue("@hid", txt_Hid.Text);
them_hotel.Parameters.AddWithValue("@name", txt_Ten.Text);
them_hotel.Parameters.AddWithValue("@star", txt_Sao.Text);
them_hotel.Parameters.AddWithValue("@address", txt_DiaChi.Text);
them_hotel.Parameters.AddWithValue("@province", txt_Tinh.Text);
them_hotel.Parameters.AddWithValue("@phone", txt_DienThoai.Text);
them_hotel.Parameters.AddWithValue("@fax", txt_Fax.Text);
them_hotel.Parameters.AddWithValue("@email", txt_Email.Text);
conn_class.OpenConnection();
them_hotel.ExecuteNonQuery();
conn_class.CloseConnection();
thanh_cong = "Đã thêm khách sạn thành công";
}