我有DataSet方法,该方法接收像这样的sql字符串:
public DataSet GetDataSet(string sql, string TableName)
{
this._Errors = false;
SqlDataAdapter da = new SqlDataAdapter(sql.ToString(), this.dbconn);
da.SelectCommand.CommandTimeout = 0;
DataSet ds = new DataSet();
try
{
da.Fill(ds, TableName);
return ds;
}
catch (SqlException e)
{
this.HandleSQLError(e, "GetDataSet", sql);
return null;
}
}
这可以正常工作,但是现在我想发送DataTable
以在SQL中以Table Variable
的身份接收
使用SqlCommand很简单,例如:
SqlCommand cmd = new SqlCommand(sprocName, this.dbconn);
cmd.Parameters.Add(new SqlParameter(customerTypeTableName, SqlDbType.Structured));
cmd.Parameters[customerTypeTableName].Value = customerTypeList;
如何通过SqlAdapter
方法进行修改?问候
答案 0 :(得分:0)
IMO,您应该编写新功能。无需使用DataAdapter。如下面的代码片段所示,SqlCommand类型的对象就足够了。
comm.Parameters.AddWithValue("@tvpEmails", dt); // dt is your DataTable
// your UDDT type should exist on your SQL instance under UDDT types
comm.Parameters[comm.Parameters.Count - 1].TypeName = "your UDDT type";
comm.Parameters[comm.Parameters.Count - 1].SqlDbType = SqlDbType.Structured;
comm.ExecuteNonQuery();