use*_*814 2 c# string select return
我有一个应用程序C#连接并在数据库中做一些事情,所以我需要在表中找到一个序列号并返回它,我这样做但我有一个问题:
public int Select_Begin(string serial)
{
string query = "SELECT serial FROM `compteur_mono` WHERE serial = " + serial + ";";
//Open connection
MySqlCommand cmd = new MySqlCommand(query, connection);
if (this.OpenConnection() == true)
{
int numero = cmd.ExecuteNonQuery();
return numero;
}
else
{
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行时,结果总是-1但是当我这样做时:
public string Select_Begin(string serial)
{
string query = "SELECT serial FROM `compteur_mono` WHERE serial = " + serial + ";";
//Open connection
MySqlCommand cmd = new MySqlCommand(query, connection);
if (this.OpenConnection() == true)
{
string serial = cmd.ExecuteNonQuery();
return serial;
}
else
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
出现此错误:错误1无法将类型'int'隐式转换为'string'
一些帮助请,我不会使用dataReader,因为我只有一个序列返回它:*谢谢
ExecuteNonQuery 不期望查询.SELECT serial是一个查询.改变它ExecuteScalar并且一切都会起作用.using如果可能的话,你应该添加一些语句和参数化,注意.
const string query =
"SELECT serial FROM `compteur_mono` WHERE serial = @serial;";
using(var cmd = new MySqlCommand(query, connection))
{
cmd.Parameters.AddWithValue("@serial", serial);
if (this.OpenConnection())
{
return (string)cmd.ExecuteScalar();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
或者用"小巧玲珑":
return connection.Query<string>(
"SELECT serial FROM `compteur_mono` WHERE serial = @serial;",
new { serial }).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |