2014-09-24 28 views
-1

我嘗試在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

回答

0
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

-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); 
+0

你仍然沒有分配一個值。這裏有什麼難的?我發佈了正確的答案。 – Paparazzi 2014-09-27 15:11:02