DataReader和Dataset之间的区别?

时间:2014-01-31 19:13:36

标签: c#

我想将此代码转换为使用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();

4 个答案:

答案 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)

当你的问题询问差异时,就在这里:

  1. DataReader用于连接架构。这意味着连接保持打开状态,直到您遍历并逐个获取所有记录。只有在写入con.Close()时获取记录后才会关闭。

  2. DataSet和DataAdapter用于断开连接的体系结构。这意味着他们带来数据并且长时间没有开放连接。因此,如果数据库在提交数据后发生更改,您将无法获得更新,因为它已缓存。

  3. 举个例子: 一家石油公司位于迪拜(DataSource - Database),它需要发油说美国(Application UI)。有两种方式?

    1. 喷气式飞机将油运到美国。 - 断开连接。喷气式飞机是DataAdapter,其中带油的容器是数据集/数据表。
    2. 一条管道穿过迪拜到达美国。 - 连接的。管道是读者。
    3. 尴尬的例子。 ;)希望这会使区别变得清晰。