C# 如果(计数器==<;数据库值>;)

C# 如果(计数器==<;数据库值>;),c#,mysql,database,C#,Mysql,Database,如何将数据库中的值设置为可用于if-else函数的int 例如:在我的数据库“armnumber=3”中,如何在if-else函数中使用它 代码 string myConnectionString; myConnectionString = "server=localhost;uid=root;pwd=root;database=medicloud;SslMode=None;charset=utf8"; try { MySqlConnection connection = new My

如何将数据库中的值设置为可用于if-else函数的int

例如:在我的数据库“armnumber=3”中,如何在if-else函数中使用它

代码

string myConnectionString;
myConnectionString = "server=localhost;uid=root;pwd=root;database=medicloud;SslMode=None;charset=utf8";

try
{
    MySqlConnection connection = new MySqlConnection(myConnectionString);
    MySqlCommand cmd = new MySqlCommand();

    cmd.CommandType = CommandType.Text;
    string sqlStr = "Select armnumber from assign where id=1";
    cmd.CommandText = sqlStr;
    cmd.Connection = connection;

    connection.Open();
    cmd.ExecuteNonQuery();
}

catch (MySqlException ex)
{
}
#endregion
if (counter == )
{
}
一种选择是这样的:

MySqlDataAdapter da = new MySqlDataAdapter {SelectCommand = cmd};
DataSet ds = new DataSet();
int armnumber = da.Fill(ds);
...
if (counter == armnumber)
此外,您还应始终使用,以避免:

最初的几点注意:

  • 获取异常后继续操作不是一个好的做法,因此我更喜欢
    if(counter==xx)
    中的
    try
  • 如果
    where
    子句中
    ID
    的值是可变的,则使用参数化代替串联查询
  • 由于只提取单个字段,因此请使用
    ExecuteScalar
    代替
    ExecuteNonQuery
  • 您可以很好地使用
    als来正确管理连接和命令对象
因此,代码可以写成:

try
{
    string sqlStr = "Select armnumber from assign where  id=@id";
    MySqlConnection connection = new MySqlConnection(myConnectionString);
    MySqlCommand cmd = new MySqlCommand();
    cmd.Parameters.AddWithValue("@id", 1);
    cmd.CommandType = CommandType.Text;                
    cmd.CommandText = sqlStr;
    cmd.Connection = connection;
    connection.Open();
    var result = cmd.ExecuteScalar();
    int armnumber = result != null ? int.Parse(result.ToString()) : 0;
    if (counter == armnumber)
    {
        // code here
    }
}

catch (MySqlException ex)
{
}

您应该替换此代码

connection.Open();
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
int databaseValue = int.Parse(reader["armnumber"].ToString());
connection.Close();

select不是“非”查询,您无法获取结果。。您需要执行该查询,并读取其在表中拾取的数字,然后您将获得int@S.Akbari啊。。。很抱歉):谢谢您的建议(:它说“int.Parse(result)”,无法将对象转换为字符串o.o当我运行它时,ExecuteScalar()会给我windows 1232错误。如何修复它?
connection.Open();
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();
int databaseValue = int.Parse(reader["armnumber"].ToString());
connection.Close();