我正在尝试从C#查询SQL Server数据库
我有课
Class_A { public fetch((string name, string last_name)) { SqlConnection conn = null; double val = 0; string server = "123.444.22.sss"; string dbase = "xyz"; string userid = "cnsk"; string password = "xxxxxx"; string connection = "Data Source=" + server + ";Initial Catalog=" + dbase + ";User ID=" + userid + ";Password=" + password; conn = new SqlConnection(connection); try { conn.Open(); } catch(Exception) { string e = "Database error contact administrator"; MessageBox.Show(e, "Error!"); } try { SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand("select * from table where NAME" + " = name and LAST_NAME = last_name", conn); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { //do something } } catch (Exception e) { Console.WriteLine(e.ToString()); } return (0); } }
我的查询中有问题。
当我给普通查询“从表中选择*”时,这给了我完美的结果。
但是当我尝试给出条件时,它给了我错误。有什么建议可以解决吗?谢谢。
钿狅笍 警告 此答案包含一个SQL注入安全漏洞。不要使用它。如该问题的其他一些答案所述(例如,Tony Hopkinson的答案),请考虑使用参数化查询。
尝试在where子句中的值周围添加引号,如下所示:
select * from table where NAME = 'name' and LAST_NAME = 'last_name'
在使用变量的情况下,需要添加引号,然后将变量的值连接到字符串中。或者您可以这样使用String.Format:
String.Format
var sql = String.Format("select * from table where [NAME] = '{0}' and LAST_NAME = '{1}'", name, last_name); SqlCommand myCommand = new SqlCommand(sql);