使用SqlAdapter发送数据表

时间:2019-05-24 21:59:01

标签: c# sql-server

我有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方法进行修改?问候

1 个答案:

答案 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();