【发布时间】:2014-05-14 03:57:28
【问题描述】:
我正在尝试使用 C#using System.Data.SqlClient; 从 SQL 表中查询数据。我可以SELECT * FROM table 没有问题。我怀疑我的问题可能是由于数据类型,并且可能无意中错误地转换了某些变量。我得到的错误是:不存在数据时读取数据的尝试无效。
更多细节:
在我的 SQL 表中,Column1 和 Column3 的类型是 int。 Column2 和 Column4 的类型为 char(1)。 Column5 的类型是小数(5,4)。
您能帮忙找出以下代码中的问题吗?
public void Score(List<Tuple<int, char>> myList)
{
int myColumn1 = myList[0].Item1;
char myColumn2 = myList[0].Item2;
int myColumn3 = myList[1].Item1;
char myColumn4 = myList[1].Item2;
myConnection.Open();
SqlCommand myCommand = new SqlCommand("SELECT * FROM table" +
" WHERE Column1 = " + myColumn1 +
" AND Column2 = '" + myColumn2 +
"' AND Column3 = " + myColumn3 +
" AND Column4 = '" + myColumn4 + "'", myConnection);
SqlDataReader myReader = null;
myReader = myCommand.ExecuteReader();
Console.Out.WriteLine(myReader[5].ToString());
}
谢谢!
【问题讨论】:
-
你已经启动了两次 mycommand
-
您需要考虑为您的 sql 使用参数。到目前为止,您正在向 SQL 注入攻击敞开大门。
-
您的 char 列是否用空格填充,以防止匹配?
标签: c# sql syntax type-conversion