我正在尝试使用 C# MSVS 2008 从名为 Specializationtbl 的表中检索特化 ID,该表在其他一些行旁边包括 SpecializationName 和 SpecializationID,我的问题与一些错误“No Data to present”有关,命令如下波纹管:
SqlCommand READSpecID = new SqlCommand("SELECT * FROM Specializationtbl WHERE SpecializationName='" + comboBox1.Text + "'" , DBcnction);
DBcnction.Open();
SqlDataReader ReadSpecID_ = READSpecID.ExecuteReader();
ReadSpecID_.Read();
int SpecID_ = Convert.ToInt16(ReadSpecID_["SpecID"].ToString());
DBcnction.Close();
我还尝试选择“SpecID”而不是所有行,但似乎无法正确密封查询并不断收到“无数据”错误,知道我在哪里犯错了吗?
最佳答案
1) 在给 READSPecID 赋值之前尝试打开 DBcnction
DBcnction.Open();
SqlCommand READSpecID = new SqlCommand("SELECT * FROM Specializationtbl WHERE SpecializationName='" + comboBox1.Text + "'" , DBcnction);
2)在SSMS中运行命令:
SELECT * FROM Specializationtbl WHERE SpecializationName ='yourvalue'
看看有没有返回结果
3) 检查 comboBox1.Text 是否有值
4) 验证 comboBox1.Text 的内容(或使用参数化查询或存储过程)以确保您不会成为 SQL 注入(inject)的受害者:http://en.wikipedia.org/wiki/SQL_injection
关于c# - SqlDataReader 执行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363834/