读书人

sqldatareader的有关问题~

发布时间: 2012-01-28 22:06:13 作者: rapoo

sqldatareader的问题~~
public SqlDataReader GetPersonData(string cPsnNum)
{
string selectStr = "select cPsn_Num,cPsn_Name from person where cPsn_Num= "+cPsnNum;
this.sqlC = new SqlConnection(DBOperate.connectStr);
this.sqlCmd = new SqlCommand(selectStr, this.sqlC);
this.sqlC.Open();
this.sqlDr = this.sqlCmd.ExecuteReader();
return this.sqlDr;
}

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.CurrentCell.OwningColumn.HeaderText == "人员编号 ")
{
if (dataGridView1.CurrentRow.DataBoundItem == null)
{
return;
}
else
{
dataGridView1.Visible = false;
tabControl1.Visible = true;
}
DBOperate dbop = new DBOperate();
SqlDataReader sdr = dbop.GetPersonData(dataGridView1.CurrentCell.Value.ToString());
sdr.Read();
cPsn_Num.Text = sdr[0].ToString();
cPsn_Name.Text = sdr[1].ToString();


}
}

person表cPsn_Num列中有一个值为GSFH,此列字符类型为nvarchar(),每次执行到sdr.Read()时,就提示在将 nvarchar 值 'GSFH ' 转换成数据类型 int 时失败,为什么?

[解决办法]
是不是cPsn_Num是整数类型,而dataGridView1.CurrentCell.Value是不能转换为整数的值.
[解决办法]
sdr数据进来了?怎么没有判断HasRows??

==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
本人说明: <我的帖子我做主,结贴率保持100%>
优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询)
==================================================================
[解决办法]
string selectStr = "select cPsn_Num,cPsn_Name from person where cPsn_Num= "+cPsnNum;

这个sql语句应该是
"select cPsn_Num,cPsn_Name from person where cPsn_Num= ' "+cPsnNum + " ' ";

因为你传进来的就是字符串
[解决办法]
如果数据库中的cPsn_Num字段为整型。那就
int x = int.Parse(cPsnNum);
string selectStr = "select cPsn_Num,cPsn_Name from person where cPsn_Num= "+ x;

读书人网 >C#

热点推荐