【发布时间】:2014-11-18 22:43:18
【问题描述】:
我尝试在 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,它也不允许我使用字符串。
在 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. 所以还是什么都没有。
你们知道发生了什么事吗?如果您需要澄清,尽管问。
提前致谢
编辑: 下面提供的代码 sn-p 正在工作。似乎字符串不起作用。
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();
}
}
【问题讨论】:
-
我似乎无法连接你可以。您只需将
'用于字符值(在您的情况下为street)。但始终首选参数化查询。顺便说一句,CREATE PROCEDURE到底是什么? -
请向我们展示您的脚本,用于创建 clr 过程的“包装器”
-
试试
AddWithValue例如comm.Parameters.AddWithValue("@street", street) -
这是您的完整代码吗?你的
INSERT使用参数的命令(强烈推荐而不是你的第一个)对我来说看起来不错。 -
@SonerGönül 我不明白。我应该...
VALUES("+'street'+","+number+"...吗?因为这似乎也不起作用。 CREATE PROCEDURE 是 SQLServer 中的东西,可用于运行某段 TSQL 代码。
标签: c# sql-server tsql sql-insert sqlclr