相关疑难解决方法(0)

C#SQL Server - 将列表传递给存储过程

我从我的C#代码调用SQL Server存储过程:

using (SqlConnection conn = new SqlConnection(connstring))
{
   conn.Open();
   using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn))
   {
      cmd.CommandType = CommandType.StoredProcedure;

      var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable);
      var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold);
      var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold);

      STableParameter .SqlDbType = SqlDbType.Structured;
      NDistanceParameter.SqlDbType = SqlDbType.Int;
      RDistanceParameter.SqlDbType = SqlDbType.Int;

      // Execute the query
      SqlDataReader QueryReader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

我的存储过程是相当标准的但是加入了QueryTable(因此需要使用存储过程).

现在:我想List<string>在参数集中添加一个字符串列表.例如,我的存储过程查询如下所示:

SELECT feature 
FROM table1 t1 
INNER JOIN @QueryTable t2 ON t1.fid = t2.fid 
WHERE title IN <LIST_OF_STRINGS_GOES_HERE>
Run Code Online (Sandbox Code Playgroud)

但是,字符串列表是动态的,几百长.

有没有办法将字符串列表传递List<string> …

c# sql stored-procedures

105
推荐指数
3
解决办法
17万
查看次数

将DataTable作为参数传递给存储过程

我有一个用C#创建的数据表.

DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));

dt.Rows.Add("James", 23);
dt.Rows.Add("Smith", 40);
dt.Rows.Add("Paul", 20);
Run Code Online (Sandbox Code Playgroud)

我想将此传递给以下存储过程.

CREATE PROCEDURE  SomeName(@data DATATABLE)
AS
BEGIN
    INSERT INTO SOMETABLE(Column2,Column3)
    VALUES(......);
END
Run Code Online (Sandbox Code Playgroud)

我的问题是:我们如何将这3个元组插入SQL表?我们需要使用点运算符访问列值吗?或者还有其他方法吗?

c# t-sql sql-server ado.net stored-procedures

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

stored-procedures ×2

ado.net ×1

sql ×1

sql-server ×1

t-sql ×1