C# mysql 一键更新和选择

标签 c# mysql select button

我是 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

请问,您能告诉我,如何只需单击一下即可完成这两项操作(更新和选择)吗?

感谢并为我糟糕的英语感到抱歉。

最佳答案

您的代码目前的行为如下:

  1. 使用常量 SQL 查询定义 SELECT 语句。
  2. 使用标签文本的内容定义 UPDATE 语句(可能为空?)
  3. 使用MySqlDataAdapter填充数据表。它必须从您的数据库中恢复第一个可用的号码。
  4. 打开连接并执行更新。
  5. 恢复第 3 点填充的第一个数据行的第一列。

我认为这种情况下的问题是您正在混合代码来达到解决方案。试试这个:

  1. 使用常量 SQL 查询定义 SELECT 语句。
  2. 使用 MySqlDataAdapter 填充数据表。
  3. 恢复第 2 点中填充的第一个数据行的第一列,并将值填充到标签文本中。
  4. 使用标签文本的内容定义UPDATE语句(这 time 已恢复上一步中的数字。
  5. 打开连接并执行更新。

类似...

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/

相关文章:

C# Wpf Datagrid Last Column Width ="*"折叠其他列

php - CodeIgniter DataMapper 慢吗?

mysql - Laravel 查询生成器 - 从另一个表中选择前 1 行

c++ - select() 最大套接字

javascript - 从客户端获取服务器日期时间

c# - 无法通过命名管道发送 protobuf 流并取回结果

c# - 绘制带有初级和次级 y 轴的折线图 c#

SQL:一对多,仅选择一个

c# - SQL Server 从 C# 中选择查询执行

mysql - 如果条件大于返回值,则选择上一条记录