Различия в базе данных SQL - PullRequest
0 голосов
/ 27 августа 2009

У меня есть 2 кода для подключения к базе данных SQL Server 2005. код 1 использует набор данных, а Dataadapter, код 2 , не использовал ни тот, ни другой. Может кто-нибудь, пожалуйста, помогите мне объяснить, в чем различия и преимущества / недостатки в обеих программах .. спасибо

code1


//create connection, dataset, dataadapter
System.Data.SqlClient.SqlConnection con;
DataSet ds1;
System.Data.SqlClient.SqlDataAdapter da;</p>

<p>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();</p>

<pre><code> //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:

<code>
System.Data.SqlClient.SqlConnection sqlConnection1 =
  new System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=F:\Test2.mdf;Integrated Security=True;User Instance=True");</p>

<p>//command queries
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text
//cmd.CommandText = "INSERT INTO tblSend (ip, msg, date) SELECT ip, msg, date FROM tblOutbox";
cmd.Connection = sqlConnection1;</p>

<p>sqlConnection1.Open(); //open con
cmd.ExecuteNonQuery(); //execute query
sqlConnection1.Close(); //close con

Ответы [ 4 ]

2 голосов
/ 27 августа 2009

В первом коде вы пытаетесь получить набор результатов из базы данных, используя dataadpater , а затем заполняете набор данных методом fill dataadapter.

Во втором вы вставляете детали в таблицу, используя ExecuteNonQuery метод SqlCommand объект.

1 голос
/ 27 августа 2009

Первый получает что-то из базы данных, это select. Второй ничего не делает, но если cmd.CommandText не закомментирован, он выполняет insert. Это определенно не примеры того, как делать одно и то же по-разному.

1 голос
/ 27 августа 2009

Код 1 - это выборка (отсюда и набор данных, который является объектом хранения данных), а код 2 просто запускает команду (вставку) в базе данных. Однако cmd.CommandText () прокомментирован (и, следовательно, не задан), так что код на самом деле вызовет исключение.

РЕДАКТИРОВАТЬ: Посмотрите здесь: Документация ADO.Net 2.0 MSDN

0 голосов
/ 27 августа 2009

Первый, который вы выбираете, а второй, который вы вставляете:)

Набор данных и Dataadapter используются для извлечения данных из базы данных.

Dataadapter действует как мост между базой данных и набором данных.

Во втором коде написано, что это для вставки ваших данных в базу данных.

ExecuteNonQuery сообщает, сколько строк затронуто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...