带参数的SQLServer CLR

问题描述:

我尝试在C#中使用SQLServer Management Studio 2014中的CLR。现在一切正常,除非我开始插入参数。带参数的SQLServer CLR

如何在CLR中插入参数并将其用于PROC? 我试图把这些参数的功能括号:

public static void InsertInto(SqlString street, SqlInt32 number) 
    { 
     using(SqlConnection conn = new SqlConnection("context connection = true")) 
     { 
      SqlCommand comm = new SqlCommand(); 
      comm.CommandText = "INSERT INTO TABLE_CLRTEST (COLRW_STREET, COLRW_NUMBER) VALUES("+street+","+number+")"; 

我似乎无法以连接的SqlString,它不会让我用一个字符串无论是。

而在C#和我想是这样的:

comm.CommandText = "INSERT INTO TABLE_CLRTEST (COLRW_STREET, COLRW_NUMBER) VALUES(@street,@number)"; 

      comm.Parameters.Add("@street", SqlDbType.VarChar,50); 
      comm.Parameters.Add("@number", SqlDbType.Int); 

当我使用这是出现以下错误:CREATE PROCEDURE failed because parameter counts do not match.所以仍然一无所获。

你们是否知道发生了什么?如果你需要澄清,请问。

预先感谢

编辑: 下面提供的代码片段正在工作。看起来Strings不起作用。

public static void updateTest(SqlInt32 lo, SqlInt32 la) 
    { 
     using (SqlConnection conn = new SqlConnection("context connection = true")) 
     { 
conn.Open(); 
       SqlCommand update = new SqlCommand(); 
       update.CommandText = "UPDATE TABLE_CLRTEST SET COLRW_LONGITUDE = " + lo + ", COLRW_LATITUDE = " + la + ""; 
       update.Connection = conn; 
       update.ExecuteNonQuery(); 
       conn.Close(); 
} 
} 
+0

_I似乎无法concateate_您可以。你只需要使用'''作为字符值(在你的情况下它是'street')。但参数化查询总是首选。顺便说一句,无论如何,“CREATE PROCEDURE”是什么? – 2014-09-24 12:30:17

+0

Plese,向我们展示您创建clr程序的'wrapper'的脚本 – 2014-09-24 12:32:15

+0

尝试'AddWithValue'例如'comm.Parameters.AddWithValue(“@ street”,street)' – 2014-09-24 12:32:20

comm.CommandText = "INSERT INTO TABLE_CLRTEST (COLRW_STREET , COLRW_NUMBER) 
             VALUES('" + street + "'," + number +")"; 

在您的参数,你不分配一个值。

comm.Parameters.Add(
    "@street", SqlDbType.VarChar,50).Value = street; 
+0

是分配给变量的值,还是值的变量名称? 当你以后改变它时,给它一个价值似乎很奇怪。 – user3208216 2014-09-25 07:19:22

+0

这是两种选择,是烤面包机将是变量。而且它后面的代码并没有改变它。 – Paparazzi 2014-09-25 12:44:23

我忘记了Add声明。 最终代码:

SqlCommand command = new SqlCommand(); 
SqlParameter pstreet = new SqlParameter("@street", SqlDbType.VarChar, 150); 
command.CommandText = "INSERT INTO CHIEF_TEST.dbo.TABLE_CLRTEST(COLRW_STREET) VALUES(@street)"; 
command.Parameters.Add(pstreet); 
+0

你仍然没有分配一个值。这里有什么难的?我发布了正确的答案。 – Paparazzi 2014-09-27 15:11:02