2016-08-05 63 views
0

我很迷惑下面的代碼。這也插入數據插入表中插入存儲過程,即使這沒有執行的查詢(),執行calar()或adapter.insert類似的方法... 然後它是如何可能插入數據使用SqlDataAdapter

public DataSet GetDataSet(string spName, System.Collections.Hashtable hst) 
{ 
    cmd.CommandTimeout = 220; 
    con = new SqlConnection(); 
    cmd = new SqlCommand(); 
    con.ConnectionString = constr; 
    cmd.Connection = con; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = spName; 
    con.Open(); 
    if (hst != null) 
     if (hst.Count > 0) 
      AttachParameters(cmd, hst); 
    DataSet dataset = new DataSet(); 
    SqlDataAdapter adapter = new SqlDataAdapter(); 
    adapter.SelectCommand = cmd; 
    adapter.Fill(dataset); 
    con.Close(); 
    return dataset; 

} 
+0

填充方法確實在內部。它執行命令中定義的存儲過程並將其填充到數據集中(數據表) – gsharp

+0

爲什麼不在存儲過程中創建@Action變量..您只需傳遞必須執行的action =「Insert/etc」並且相應的代碼將運行。 – Abhishek

回答

0

此方法只檢索u想的數據,並將其存儲到數據集 adapter.Fill(dataset);這部分是用來用U填充出來的數據來填補你的數據集。

這樣才能傳遞給您的存儲過程,在技術上你的存儲過程是在做刀片不this.In存儲過程ü應該有一個INSERT語句

如果存儲過程是在數據庫中的存儲過程的文件夾ü不需要使用轉接器,因爲它會在內部運行檢索結果

像這樣

INSERT INTO msdb.dbo.db(db) VALUES (@dbdata)