为什么以下语句变为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
答案 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();
}