我是 C# 初学者,但我必须为 friend 制作一个软件。它用于生成数字(它们在 mysql 中)。我的标签和按钮上有编号。该按钮用于从 MySQL 生成下一个数字(它从数据库中选择数字,未使用)。 我的代码:
private void button1_Click(object sender, EventArgs e)
{
string input = label1.Text.Trim();
string conn = "server=46.28.110.147;user=______;password=________;database=________;";
MySqlConnection myconn = new MySqlConnection(conn);
string sql = "SELECT numbers FROM domestic WHERE used=0 ORDER BY numbers LIMIT 1";
string sq2 = "UPDATE domestic SET used = 1 WHERE numbers = '" + label1.Text +"'";
MySqlDataAdapter da = new MySqlDataAdapter(sql, myconn);
MySqlCommand cmd = new MySqlCommand(sq2, myconn);
DataTable dt = new DataTable();
da.Fill(dt);
myconn.Open();
cmd.ExecuteNonQuery();
myconn.Close();
label1.Text = dt.Rows[0][0] + "";
}
问题是当我点击按钮时。 1)单击按钮 - 它进行更新(不选择)(它将used = 1设置为数据库中的数字,位于标签中) 2)再次单击按钮 - 它仅选择(它从数据库中获取下一个数字,使用= 0) 3)单击按钮 - 它仅更新(不选择) 4) 点击按钮 - 再次从步骤 2 到步骤 3
请问,您能告诉我,如何只需单击一下即可完成这两项操作(更新和选择)吗?
感谢并为我糟糕的英语感到抱歉。
最佳答案
您的代码目前的行为如下:
- 使用常量 SQL 查询定义
SELECT
语句。 - 使用标签文本的内容定义
UPDATE
语句(可能为空?) - 使用
MySqlDataAdapter
填充数据表。它必须从您的数据库中恢复第一个可用的号码。 - 打开连接并执行更新。
- 恢复第 3 点填充的第一个数据行的第一列。
我认为这种情况下的问题是您正在混合代码来达到解决方案。试试这个:
- 使用常量 SQL 查询定义
SELECT
语句。 - 使用 MySqlDataAdapter 填充数据表。
- 恢复第 2 点中填充的第一个数据行的第一列,并将值填充到标签文本中。
- 使用标签文本的内容定义
UPDATE
语句(这 time 已恢复上一步中的数字。 - 打开连接并执行更新。
类似...
private void button1_Click(object sender, EventArgs e)
{
string input = label1.Text.Trim();
string conn = "server=46.28.110.147;user=______;password=________;database=________;";
MySqlConnection myconn = new MySqlConnection(conn);
string sql = "SELECT numbers FROM domestic WHERE used=0 ORDER BY numbers LIMIT 1";
MySqlDataAdapter da = new MySqlDataAdapter(sql, myconn);
DataTable dt = new DataTable();
da.Fill(dt);
label1.Text = dt.Rows[0][0] + ""; // Recovers the value and puts into label.
MySqlCommand cmd = new MySqlCommand(sq2, myconn);
string sq2 = "UPDATE domestic SET used = 1 WHERE numbers = '" + label1.Text +"'";
myconn.Open();
cmd.ExecuteNonQuery(); // Updates database to set used = 1 for recovered number.
myconn.Close();
}
关于C# mysql 一键更新和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741035/