200分!!!急急急!!C#.net dataset的问题,sqldataAdapter的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 12:26:39
string strSql = "select * from z_VoteInfo where Vote_ID='" + Request.QueryString["vid"].ToString() + "';";
SqlConnection conn = DBConn.GetConn();

conn.Open();
SqlDataAdapter da = new SqlDataAdapter(strSql,conn);
//初始化DataSet
DataSet ds = new DataSet();
//得到数据表
da.Fill(ds,"dablea");
DataTable dtTable = ds.Tables["tablea"];
//显示投票主题
this.lblTitle.Text = dtTable.Rows[0]["Vote_Title"].ToString();
//显示投票内容
this.tbMsg.Text = dtTable.Rows[0]["Vote_Question"].ToString();
//如果不是有效的,则不显示
if (dtTable.Rows[0]["Vote_IsValid"].ToString() == "0")
this.lblValid.Text = "不显示";
else
this.lblValid.Text = "显示";
this.lblChoices.Text = "

string strSql = "select * from z_VoteInfo where Vote_ID='" + Request.QueryString["vid"].ToString() + "';";
改成
string strSql = "select * from [z_VoteInfo] where [Vote_ID]='" + Request.QueryString["vid"].ToString() + "'";
还有
da.Fill(ds,"dablea");
DataTable dtTable = ds.Tables["tablea"];
这个是tablea还是dablea?
语法错误就是你SQL语句中表名和列名没有加中括号,而且最后多加了一个分号

先说几个问题
1.QueryString的索引器返回的本来就是string,没必要再ToString()。
2.如果你用DataSet,没必要把conn.Close放在那么后面,你延长了数据库连接的时间。
3.从你的用法来看,根本没必要用DataSet,用DataTable、DataReader足矣,除非你是为了用DataSet而用DataSet。
4.用DBConnection、DBDataAdapter、DataSet,记得Dispose。
5.如果你只取一行,请用TOP 1。

“二楼听风雨”说的不正确。
根据帮助文档,SqlDataAdapter:
public sealed class SqlDataAdapter : DbDataAdapter
而DbDataAdapter:
public abstract class DbDataAdapter : DataAdapter, IDbDataAdapter, IDataAdapter, ICloneable
“二楼听风雨”查阅的是Dat