无法找到列

时间:2014-03-15 13:44:56

标签: c# mysql sql .net

为什么以下语句变为false?

    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();
    }

这是我的数据库: 数据库名称:连接 表名:用户

number: 18.81
id: 1

2 个答案:

答案 0 :(得分:2)

您当前只从数据库中选择number字段,但尝试从结果集中读取text字段。将text字段添加到select语句(如果要从数据库中获取文本):

command.CommandText = "Select text from user where id=1";

或者从结果集中读取number(如果您描述的表格结构正确,我认为您需要此解决方案):

Console.WriteLine(reader["number"].ToString());

答案 1 :(得分:0)

使用参数化查询,您的查询对SQL注入开放。

在您的sql select语句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();
}