我尝试在C#中创建一个CLR,以便在SQLServer Management Studio 2014中使用。现在一切正常,除非我开始插入参数。
如何在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,也不会让我使用String。
在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 :(得分:0)
comm.CommandText = "INSERT INTO TABLE_CLRTEST (COLRW_STREET , COLRW_NUMBER)
VALUES('" + street + "'," + number +" )";
在您的参数中,您没有分配值。
comm.Parameters.Add(
"@street", SqlDbType.VarChar,50).Value = street;
答案 1 :(得分:-1)
我忘记了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);