2016-08-05 64 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)