SQL数据库差异

时间:2009-08-27 06:55:21

标签: sql sql-server database ado.net

我有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();

4 个答案:

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

您正在选择的第一个,在您插入的第二个中:)

DatasetDataadapter用于从数据库中获取数据。

Dataadapter充当数据库和数据集之间的桥梁。

在你的第二个代码中说它用于将数据插入数据库。

ExecuteNonQuery表示受影响的行数。