【发布时间】:2015-07-09 15:58:15
【问题描述】:
假设我有一个如下所示的查询结果:
ID NAME Phone
---- ---- -----
1 John 123456
2 John 125678
3 John 345678
4 Abby 456789
5 Abby 567890
我只想返回姓名的单行实例:John,其中电话号码类似于“12%”。
在 c# 中,我编写了这个语法来获取 PersonName 变量作为查询的结果。
MySqlConnection connection = new MySqlConnection("SERVER=" + "localhost" + ";" + "DATABASE=" + "testdb" + ";" + "UID=" + "root" + ";" + "PASSWORD=" + "" + ";");
MySqlCommand command = new MySqlCommand();
connection.Open();
string selectQuery = "SELECT NAME FROM testtable WHERE Phone LIKE '12%' ORDER BY ID LIMIT 1";
command.Connection = connection;
command.CommandText = selectQuery;
string PersonName = (string)command.ExecuteScalar();
connection.Close();
我不知道我的代码有什么问题,但 PersonName 返回 null。我做错了什么?
【问题讨论】:
-
当您直接对数据库运行 selectQuery(而不是通过您显示的代码)时,结果是什么?
-
电话栏是文本还是数字栏?
-
它返回值为 John 的 1 列 1 行。
-
另外:不要忘记使用 try/finally 或使用块来包装您的连接对象,否则您最终可能会将自己锁定在数据库之外。
-
它是一个数字列。当我直接对数据库运行查询时,它会返回 John,就像我预期的那样。我确实以类似的命令启动顺序插入表查询。我找不到我的代码的错误。
标签: c# mysql executescalar