带参数的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();
}
}
comm.CommandText = "INSERT INTO TABLE_CLRTEST (COLRW_STREET , COLRW_NUMBER)
VALUES('" + street + "'," + number +")";
在您的参数,你不分配一个值。
comm.Parameters.Add(
"@street", SqlDbType.VarChar,50).Value = street;
是分配给变量的值,还是值的变量名称? 当你以后改变它时,给它一个价值似乎很奇怪。 – user3208216 2014-09-25 07:19:22
这是两种选择,是烤面包机将是变量。而且它后面的代码并没有改变它。 – 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);
你仍然没有分配一个值。这里有什么难的?我发布了正确的答案。 – Paparazzi 2014-09-27 15:11:02
_I似乎无法concateate_您可以。你只需要使用'''作为字符值(在你的情况下它是'street')。但参数化查询总是首选。顺便说一句,无论如何,“CREATE PROCEDURE”是什么? – 2014-09-24 12:30:17
Plese,向我们展示您创建clr程序的'wrapper'的脚本 – 2014-09-24 12:32:15
尝试'AddWithValue'例如'comm.Parameters.AddWithValue(“@ street”,street)' – 2014-09-24 12:32:20