带参数的SQLServer CLR

时间:2014-09-24 12:26:59

标签: c# sql-server tsql sql-insert sqlclr

我尝试在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();
}
}

2 个答案:

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