void getMessage()
{
DateTime dt ;
SqlConnection con = new SqlConnection(ConnectionString);
con.Open();
try
{
string sql = "select * from jq_it where co_id='" + co_id + "'";
SqlCommand com = new SqlCommand(sql, con);
SqlDataReader dr = com.ExecuteReader();
if (dr.Read())
{
dr.Read();
TextBox1.Text = co_id;
TextBox2.Text = dr.GetString(1);
TextBox17.Text = dr.GetString(2);
TextBox4.Text = dr.GetString(4);
TextBox5.Text = dr.GetString(5);
TextBox6.Text = dr.GetString(6);
TextBox7.Text = dr.GetString(7);
TextBox8.Text = dr.GetString(8);
TextBox9.Text = dr.GetString(9);
TextBox10.Text = dr.GetString(10);
TextBox11.Text = dr.GetString(11);
TextBox12.Text = dr.GetString(12);
TextBox13.Text = dr.GetString(13);
TextBox14.Text = dr.GetString(14);
TextBox15.Text = dr.GetString(15);
DropDownList2.ClearSelection();
DropDownList2.Items.FindByValue(dr.GetString(16)).Selected = true; TextBox16.Text = dr.GetString(17);
TextBox18.Text = dr.GetString(18);
TextBox19.Text = dr.GetDateTime(19).ToShortDateString(); DropDownList1.ClearSelection();
DropDownList1.Items.FindByValue(dr.GetInt32(20).ToString()).Selected = true; dt = dr.GetDateTime(19);
TextBox20.Text = dr.GetString(21);
TextBox21.Text = dr.GetString(22);
}
}
catch (Exception ex)
{
Response.Write("<script> alert ('" + ex.Message.ToString() + "')</script>");
}
finally
{
con.Close();
} }
在没有任何数据时进行无效的读取尝试,报的这个错误,我调试的时候走到dr.Read()这直接跳到catch那里了
这是为什么啊
{
DateTime dt ;
SqlConnection con = new SqlConnection(ConnectionString);
con.Open();
try
{
string sql = "select * from jq_it where co_id='" + co_id + "'";
SqlCommand com = new SqlCommand(sql, con);
SqlDataReader dr = com.ExecuteReader();
if (dr.Read())
{
dr.Read();
TextBox1.Text = co_id;
TextBox2.Text = dr.GetString(1);
TextBox17.Text = dr.GetString(2);
TextBox4.Text = dr.GetString(4);
TextBox5.Text = dr.GetString(5);
TextBox6.Text = dr.GetString(6);
TextBox7.Text = dr.GetString(7);
TextBox8.Text = dr.GetString(8);
TextBox9.Text = dr.GetString(9);
TextBox10.Text = dr.GetString(10);
TextBox11.Text = dr.GetString(11);
TextBox12.Text = dr.GetString(12);
TextBox13.Text = dr.GetString(13);
TextBox14.Text = dr.GetString(14);
TextBox15.Text = dr.GetString(15);
DropDownList2.ClearSelection();
DropDownList2.Items.FindByValue(dr.GetString(16)).Selected = true; TextBox16.Text = dr.GetString(17);
TextBox18.Text = dr.GetString(18);
TextBox19.Text = dr.GetDateTime(19).ToShortDateString(); DropDownList1.ClearSelection();
DropDownList1.Items.FindByValue(dr.GetInt32(20).ToString()).Selected = true; dt = dr.GetDateTime(19);
TextBox20.Text = dr.GetString(21);
TextBox21.Text = dr.GetString(22);
}
}
catch (Exception ex)
{
Response.Write("<script> alert ('" + ex.Message.ToString() + "')</script>");
}
finally
{
con.Close();
} }
在没有任何数据时进行无效的读取尝试,报的这个错误,我调试的时候走到dr.Read()这直接跳到catch那里了
这是为什么啊
解决方案 »
- POST数据时要将所有的控件都发送吗?
- public event EventHandler Click
- 谁有http://www.138job.com/上的'请选择工作地点'源代码
- IList的记录数
- 请问怎么样把用vs.net2005开发的asp.net程序给用户啊
- 急,还没解决?DateTable添加一个序号列
- 问一个Datagrid样式的问题.在线等待.
- 求思路 用户控件的自定义属性问题?
- GridView 里N多的问题没有解决!!!
- asp.net 2005中注册页面的错误,该怎么改呢?各位好心指点一下哈
- 求助,如何确定一个页面是否从指定路径进来的。
- 各位高手:在ASP.NET中怎样获取GridView中EditItemTemplate中的下拉列表框
if(dr.HasRows)
{
dr.Read(); ---这里出错?dr.read方法应该就可以进行判断了,假如有数据也将游标放在了第一条记录上了,下面也不应该用dr.read了吧?
if (dr.Read()) 这里已经读取了一条数据,
{
dr.Read(); ---这个时候游标又自动读下一条数据了,所以,你是永远也取不到第一条数据的。
.....
}
所以,我相信报错的情况并不是没有数据,而是有且只有一条数据的时候。
也就是 if (dr.Read())这里已经通过,然后继续执行dr.Read()将游标指向了下一条数据,而下一条数据明显是Null,接下来的赋值产生了错误。
if (dr.Read()) 这里已经读取了一条数据,
{
dr.Read(); ---这个时候游标又自动读下一条数据了,所以,你是永远也取不到第一条数据的。
.....
}
所以,我相信报错的情况并不是没有数据,而是有且只有一条数据的时候。
也就是 if (dr.Read())这里已经通过,然后继续执行dr.Read()将游标指向了下一条数据,而下一条数据明显是Null,接下来的赋值产生了错误。
你的意思是想在没有任何数据的时候也能取到值??
等我想到怎么样可以拿一张没有余额的银行卡从ATM里取出钱来后再回答你这个问题。
{
dr.Read(); ---这里出错? dr.read方法应该就可以进行判断了,假如有数据也将游标放在了第一条记录上了,下面也不应该用dr.read了吧?
----------------------------------------
我这里很明确的说明了问题,其次你这个getmsg方法是放在哪里了?建议你单步跟踪下
引用 8 楼 zjmotion 的回复:
解决方法:将第二个dr.read()删除即可。希望你自己能理解并明白。
删了,在没有任何数据时进行无效的读取尝试,这个错不报了,但是还是取不到里面的值
你的意思是想在没有任何数据的时候也能取到值??
等我想到怎么样可以拿一张没有余额的银行卡从ATM里取出钱来后再回答你这个问题。
----------------------------
请问lz如何取不到值?是那个co_id取不到还是后面的getstring得不到值?第一你要先确定调试的时候选用的值(co_id)是能找到相应的记录,其次字段值也是有的而不是dbnull!
DropDownList2.Items.FindByValue(dr.GetString(16)).Selected = true;
这里有问题
--------------------------------
通常不会这样使用
而是先判断字段是否是为isdbnull,不过看来是你的dropdownlist没有相应字段的这个值(可能字段值为空,而你的dropdownlist的item没有空值项,所以默认选择第一个)
-------
不是没有字段,是相应字段(datareader里面)的值可能为空。你先单步调试看看datareader取出来是什么值,然后使用dropdownlist.selectedvalue=这个值在看看
改成dr["字段名"].ToString();而且判断一个这个值在DropDownList2的item中有没有对应。
尽量不要用序号取值,因为你前面用的是select * ,以后数据结构变了,代码也得改。
改成dr["字段名"].ToString(); 而且判断一个这个值在DropDownList2的item中有没有对应。
[/Quote]这样写不对报错
2 dr["a1"].ToString();
首先你的sql查询语句应该改成类似我写的1那种方式!!!!!
然后if(dr.read())
{
string temp= dr["字段名"].ToString();
}
类似这样赋值。
---
前提是你的sql语句查询字段包含了该字段名
明显错了不判断怎么可以
if(rd.read())
{
if(rd.read())
{}
}
如果 LZ 是想获取 第2条记录 也没有必要这样吧
int i=0;
while(rd.Read())
{
if(i==1)
{
//处理
}
i++;
}
linq:
(from a in list
select a).skip(1)
建议使用Convert.ToString(dr[16])