无法找到列

本文关键字: | 更新日期: 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();
}
相关文章:
  • 没有找到相关文章