我有2个关于如何连接到SQL Server 2005数据库的代码。 代码1 正在使用数据集,Dataadapter 代码2 也没有使用。任何人都可以帮我解释两个程序的差异和优缺点.thankz
CODE1
//create connection, dataset, dataadapter
System.Data.SqlClient.SqlConnection con;
DataSet ds1;
System.Data.SqlClient.SqlDataAdapter da;
int MaxRows = 0; //hold how many rows in the dataset
int inc = 0; //change the current Row number
private void Form1_Load(object sender, EventArgs e)
{
con = new System.Data.SqlClient.SqlConnection();
ds1 = new DataSet();
//setting the connection string
con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Administrator\Documents\Visual Studio 2008\Projects\WindowsFormsApplication5\WindowsFormsApplication5\Test2.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
con.Open();
//create object for 'da' variable
string sql = "SELECT * From tblOutbox";
da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da.Fill(ds1, "tblOutbox");
NavigateRecords();
//get the number of rows in DataSet
MaxRows = ds1.Tables["tblOutbox"].Rows.Count;
con.Close();
}
代码2:
//create object for 'da' variable
string sql = "SELECT * From tblOutbox";
da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da.Fill(ds1, "tblOutbox");
NavigateRecords();
//get the number of rows in DataSet
MaxRows = ds1.Tables["tblOutbox"].Rows.Count;
con.Close();
答案 0 :(得分:2)
在第一个代码中,您尝试使用dataadpater从数据库中获取结果集,然后使用dataadapter的fill方法填充数据集。
在第二个中,您使用ExecuteNonQuery对象的SqlCommand方法向表格插入详细信息。
答案 1 :(得分:1)
代码1是一个提取(因此数据集是一个数据存储对象),代码2只是在dbase中运行命令(插入)。但是cmd.CommandText()被注释(因此未设置),因此代码实际上会抛出异常。
编辑:看看这里: ADO.Net 2.0 Documentation MSDN答案 2 :(得分:1)
第一个从数据库中获取内容,它是select
。第二个没有做任何事,但如果取消注释cmd.CommandText,它将执行insert
。他们绝对不是以不同方式做同样事情的例子。
答案 3 :(得分:0)
您正在选择的第一个,在您插入的第二个中:)
Dataset和Dataadapter用于从数据库中获取数据。
Dataadapter充当数据库和数据集之间的桥梁。
在你的第二个代码中说它用于将数据插入数据库。
ExecuteNonQuery表示受影响的行数。