【发布时间】:2013-05-15 12:29:41
【问题描述】:
我正在创建一个预订管理系统,但在尝试从 SQL 数据库获取数据并将其插入到我的应用程序的一组文本框中时遇到问题。
我想在 DataGridView 中单击按钮时显示客户详细信息,但是当我单击按钮时,应用程序会引发异常并显示以下错误消息;
不存在数据时尝试读取无效。
我已经附加了一个screenshot 的屏幕,我想在其中查看客户详细信息,以及按钮的代码,最终将在相应的文本框中显示客户详细信息。任何帮助将不胜感激!
SqlConnection sc = new SqlConnection("Data Source=localhost;Initial Catalog=LoginScreen;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.Connection = sc;
sc.Open();
SqlDataReader read = (null);
com.CommandText = ("select * from Pending_Tasks");
read = com.ExecuteReader();
CustID.Text = (read["Customer_ID"].ToString());
CustName.Text = (read["Customer_Name"].ToString());
Add1.Text = (read["Address_1"].ToString());
Add2.Text = (read["Address_2"].ToString());
PostBox.Text = (read["Postcode"].ToString());
PassBox.Text = (read["Password"].ToString());
DatBox.Text = (read["Data_Important"].ToString());
LanNumb.Text = (read["Landline"].ToString());
MobNumber.Text = (read["Mobile"].ToString());
FaultRep.Text = (read["Fault_Report"].ToString());
sc.Close();
【问题讨论】:
-
你什么都没读!你执行它,但你不遍历阅读器!使用
while(read.Read())- 请注意,如果有超过 1 组结果,只会保存最后一组。 -
你错过了
read.Read()电话 -
您的表 Pending_tasks 中有日期吗?如果是,那么你应该先做 read.Read() 然后赋值
-
您还可以将连接包装在 using 块中,以确保它被关闭。有些人建议最后还是做收盘。
标签: c# sql ado.net sqldatareader