gpt4 book ai didi

C# 检查查询是否返回空集不起作用?

转载 作者:行者123 更新时间:2023-11-29 01:29:27 25 4
gpt4 key购买 nike

我一直在努力检查数据库表中是否存在记录。我有以下代码,但无法正常工作。

 MySqlConnection connection = new MySqlConnection("My connection string");
string check = string.Format("Select COUNT(*) FROM User_Class WHERE user_class_name = '{0}'", TextBox1.Text);
string query = string.Format("INSERT INTO User_Class (user_class_name) VALUE ('{0}');", TextBox1.Text);
MySqlCommand cmd = new MySqlCommand(check, connection);
MySqlCommand cmd2 = new MySqlCommand(query, connection);
//MySqlDataReader reader;
connection.Open();
if (cmd.BeginExecuteNonQuery().Equals(0))//record does not exist
{
cmd2.BeginExecuteNonQuery();
Label1.Text = "User Class Created!";
Label1.ForeColor = Color.Green;

}
else
{
Label1.Text = "User Class Already Exists";
Label1.ForeColor = Color.Red;
}

此代码总是转到 else 情况。我也尝试过使用 MySqlDataReader 执行此操作,但这也不起作用。为什么它不返回 0(或 false/null)?检查空返回的最佳方法是什么?

最佳答案

这里至少有两个问题。

首先,您正在调用 BeginExecuteNonQuery - 它不返回整数,它返回 IAsyncResult。我强烈怀疑您根本不想处理异步 API。

其次,使用 ExecuteNonQuery 无论如何都不适合查询。我怀疑你实际上想要ExecuteScalar:

if ((int) cmd.ExecuteScalar() == 0)

您可能需要转换为 long 而不是 int;我不知道它会返回什么类型的值。但是,调用“SELECT COUNT”查询更为明智。

然后建议您使用 ExecuteNonQuery 进行 INSERT... 在将代码更改为使用参数化 SQL 而不是 SQL-injection-inviting 之后您现在使用的方法。

关于C# 检查查询是否返回空集不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com