我的程序通过前页的querystring传递过来一个id值,根据这个id值来查询数据库,结果出现标题所示错误。代码如下:
Code
我估计问题出来实例化adapter这里,如果加上 adapter.SelectCommand = selectCMD;这句则没有问题。或者将SqlDataAdapter adapter = new SqlDataAdapter(selectCMD.CommandText,conn.ConnectionString);
改为SqlDataAdapter adapter = new SqlDataAdapter(selectCMD)也没问题.
我只是不理解实例化SqlDataAdapter的时候第一个参数不就是SelectCommand的CommandText吗?为什么会出现这种问题呢?望高手指点
SqlDataAdapter adapter = new SqlDataAdapter(selectCMD.CommandText,conn.ConnectionString);
在ADO.NET,要先实例化适配器(SqlDataAdapter)才能执行的吧.
please give us the complete error message,
and i guess you didn't open the DB Connection, like this:
conn.Open();
or try this:
SqlDataAdapter adapter = new SqlDataAdapter(selectCMD.CommandText, conn);
selectCMD.Parameters.Add("@id", SqlDbType.Int, 4);
selectCMD.Parameters[0].Value = Request.QueryString["id"];
你的这个写法不对.用这种参数的写法不是这样的,
SqlDataAdapter adapter = new SqlDataAdapter(selectCMD.CommandText,conn.ConnectionString);
selectCMD.CommandText=“SELECT * FROM tbTest WHERE id =@id ";它并没有你想象的那样,把@id转换成了值。所以这个语句在数据库中执行,会发现不明的参数@id。
selectCMD.connect=conn;//链接
SqlDataAdapter adapter = new SqlDataAdapter(selectCMD);
这样就ok了