我想将此代码转换为使用DataSet
。
我不知道如何从DataSet
检索数据。
conn.Open();
string strquery = "select * from tblclientinfo where clientId=" +
txtid.Text; SqlCommand sqlcmd = new SqlCommand(strquery, conn);
SqlDataReader sqldreader = sqlcmd.ExecuteReader();
if (sqldreader.HasRows)
{
while (sqldreader.Read())
{
txtid.Text = sqldreader["clientId"].ToString();
txtname.Text = sqldreader["name"].ToString();
txtmobile.Text = sqldreader["mobile"].ToString();
txtcnic.Text = sqldreader["cnic"].ToString();
}
}
else
{
MessageBox.Show("Record for ID" + " " + txtid.Text + " " + "Not Found !");
}
sqldreader.Close();
conn.close();
答案 0 :(得分:1)
你想要这样的东西吗?
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand.CommandText = "select * from tblclientinfo where clientId = @id";
da.SelectCommand.Parameters.AddWithValue("@id", txtid);
da.SelectCommand.Connection = conn;
DataSet ds = new DataSet();
da.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
{
txtid.Text = row["clientId"].ToString();
txtname.Text = row["name"].ToString();
...
}
答案 1 :(得分:0)
DataReader
是从数据库连接读取数据的活动部分。
DataSet
是以通用方式定义的容器,因此它可以包含由DataReader
读入的任何数据结构。
答案 2 :(得分:0)
您可以使用此方法:
// Assumes that conn is a valid SqlConnection object.
string strquery = "select * from tblclientinfo where clientId=" + txtid.Text;
SqlDataAdapter adapter = new SqlDataAdapter(strquery , conn);
DataSet resultSet = new DataSet();
resultSet.Fill(resultSet, "resultSet");
//now you can read data from DataTables contained in your dataset and do whatever with it
DataTable FirstTableOfDataSet = resultSet.Tables[0];
答案 3 :(得分:0)
当你的问题询问差异时,就在这里:
DataReader用于连接架构。这意味着连接保持打开状态,直到您遍历并逐个获取所有记录。只有在写入con.Close()时获取记录后才会关闭。
DataSet和DataAdapter用于断开连接的体系结构。这意味着他们带来数据并且长时间没有开放连接。因此,如果数据库在提交数据后发生更改,您将无法获得更新,因为它已缓存。
举个例子: 一家石油公司位于迪拜(DataSource - Database),它需要发油说美国(Application UI)。有两种方式?
尴尬的例子。 ;)希望这会使区别变得清晰。