无法找到列
本文关键字: | 更新日期: 2023-09-27 17:50:20
为什么下面的语句变为假?
static void Main(string[] args)
{
string connString = "Server=localhost;Port=3306;Database=connection;Uid=root;password=;";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand command = conn.CreateCommand();
command.CommandText = "Select number from user where id=1";
try
{
conn.Open();
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["text"].ToString());
}
Console.ReadLine();
}
这是我的db:数据库名称:connection表名:user
number: 18.81
id: 1
您当前仅从数据库中选择number
字段,但试图从结果集中读取text
字段。添加text
字段来选择语句(如果你想从数据库中获取文本):
command.CommandText = "Select text from user where id=1";
或者从结果集中读取number
(我认为您需要此解决方案,如果您描述的表结构是正确的):
Console.WriteLine(reader["number"].ToString());
使用参数化查询,您的查询对SQL注入是开放的。
在您的sql选择语句Select number from user where id=1
中,您正在选择数字,但在阅读器中,您正在尝试访问错误的文本。
static void Main(string[] args)
{
string connString = "Server=localhost;Port=3306;Database=connection;Uid=root;password=;";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand command = conn.CreateCommand();
command.CommandText = "Select number from user where id=@Id";
command.Parameters.Add("@Id", SqlDbType.Int);
command.Parameters["@Id"].Value = 1;
try
{
conn.Open();
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["number"].ToString());
}
Console.ReadLine();
}