2010-08-20 43 views
29

我想使用DataAdapter填充DataGridView控件。但我不知道該怎麼做,因爲我使用帶參數的存儲過程。 有人可以舉個例子嗎?如何通過存儲過程和參數使用DataAdapter

+0

這是一個Microsoft [文章](http://support.microsoft.com/kb/306574),它提供了一個這樣做的例子。 – Garett 2010-08-20 05:10:28

回答

63

我知道了...嘿嘿

protected DataTable RetrieveEmployeeSubInfo(string employeeNo) 
     { 
      SqlCommand cmd = new SqlCommand(); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      DataTable dt = new DataTable(); 
      try 
      { 
       cmd = new SqlCommand("RETRIEVE_EMPLOYEE", pl.ConnOpen()); 
       cmd.Parameters.Add(new SqlParameter("@EMPLOYEENO", employeeNo)); 
       cmd.CommandType = CommandType.StoredProcedure; 
       da.SelectCommand = cmd; 
       da.Fill(dt); 
       dataGridView1.DataSource = dt; 
      } 
      catch (Exception x) 
      { 
       MessageBox.Show(x.GetBaseException().ToString(), "Error", 
         MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
      finally 
      { 
       cmd.Dispose(); 
       pl.MySQLConn.Close(); 
      } 
      return dt; 
     } 
+1

+1爲了得到它的工作。 – Garett 2010-08-20 14:33:42

+10

更清潔的方法是將IDisposable資源包裝在使用子句中,而不是最後嘗試 – cweston 2011-01-11 14:23:09

+0

^更清潔地使用'使用'塊 – IteratioN7T 2017-12-11 05:07:20

2

也許你的代碼是缺少從Microsoft比如這一行:!

MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure 
22
SqlConnection con = new SqlConnection(@"Some Connection String"); 
SqlDataAdapter da = new SqlDataAdapter("ParaEmp_Select",con); 
      da.SelectCommand.CommandType = CommandType.StoredProcedure; 
      da.SelectCommand.Parameters.Add("@Contactid", SqlDbType.Int).Value = 123; 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      dataGridView1.DataSource = dt; 
+1

+1以獲得更好的解決方案 – 2013-07-06 19:02:49

1

在這裏,我們走了,

DataSet ds = new DataSet(); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = con; //database connection 
cmd.CommandText = "WRITE_STORED_PROC_NAME"; // Stored procedure name 
cmd.CommandType = CommandType.StoredProcedure; // set it to stored proc 
//add parameter if necessary 
cmd.Parameters.Add("@userId", SqlDbType.Int).Value = courseid; 

SqlDataAdapter adap = new SqlDataAdapter(cmd); 
adap.Fill(ds, "Course"); 
return ds; 
0
SqlConnection con = new SqlConnection(@"Some Connection String");//connection object 
SqlDataAdapter da = new SqlDataAdapter("ParaEmp_Select",con);//SqlDataAdapter class object 
da.SelectCommand.CommandType = CommandType.StoredProcedure; //command sype 
da.SelectCommand.Parameters.Add("@Contactid", SqlDbType.Int).Value = 123; //pass perametter 
DataTable dt = new DataTable(); //dataset class object 
da.Fill(dt); //call the stored producer 
1
public DataSet Myfunction(string Myparameter) 
    { 
     config.cmd.Connection = config.cnx; 
     config.cmd.CommandText = "ProcName"; 
     config.cmd.CommandType = CommandType.StoredProcedure; 
     config.cmd.Parameters.Add("parameter", SqlDbType.VarChar, 10); 
     config.cmd.Parameters["parameter"].Value = Myparameter; 

     config.dRadio = new SqlDataAdapter(config.cmd); 
     config.dRadio.Fill(config.ds,"Table"); 

     return config.ds; 


    } 
1
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 
     builder.DataSource = <sql server name>; 
     builder.UserID = <user id>; //User id used to login into SQL 
     builder.Password = <password>; //password used to login into SQL 
     builder.InitialCatalog = <database name>; //Name of Database 

     DataTable orderTable = new DataTable(); 

     //<sp name> stored procedute name which you want to exceute 
     using (var con = new SqlConnection(builder.ConnectionString)) 
     using (SqlCommand cmd = new SqlCommand(<sp name>, con)) 
     using (var da = new SqlDataAdapter(cmd)) 
     { 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      //Data adapter(da) fills the data retuned from stored procedure 
      //into orderTable 
      da.Fill(orderTable); 
     }