2012-09-20 55 views
2

這是我的代碼,但它返回-1值。 Name字段包含一個unicode值。如何通過Unicode值作爲選擇命令的參數

using (SqlConnection conn = new SqlConnection(connStr)) 
    {  
     string str = string.Format("select SrNo from Jat where [email protected]"); 
     SqlCommand dCmd = new SqlCommand(str, conn); 
     try 
     {    
      dCmd.Parameters.AddWithValue("@Name","N" +Name); 
      int i= dCmd.ExecuteNonQuery(); 
      return i; 
     } 
     catch 
     { 
      throw; 
     } 
    } 
+0

顯示方式:** HTTP://stackoverflow.com/questions/7548371/unicode-sql-query-w-parameter-instead -n-前綴** –

回答

2

沒有必要從這個寫下來

dCmd.Parameters.AddWithValue("@Name","N" +Name); 

刪除 「N」,但它不創建爲nvarchar參數

dCmd.Parameters.AddWithValue("@Name", Name); 

要創建nvarchar的類型參數比你這樣做

dCmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar)).Value = Name; 

這將創造出比你可以添加此參數爲nvarchar的參數爲nvarchar參數

代碼

多一個變化是利用ExecuteScalar

int i= Convert.ToInt32(dCmd.ExecuteScalar()); 

化妝用的ExecuteScalar方法,而不是ExecuteNonQuey的.. ..becuase非Sclar方法的返回值SrNo和NonQuery在使用更新和插入查詢時返回行受影響

+0

謝謝@Pranay我通過刪除N使用,但它也返回-1 – Somnath

+0

@Somnath - 檢查您的數據庫與傳入的名稱。該查詢要求它是_identical_。 – Oded

+0

@Somnath - 使用ExecuteScalar方法而不是ExecuteNonQuey ....因爲你的Sclar方法的返回值SrNo和NonQuery返回你使用更新和插入查詢時受影響的行 –

1

首先,Unicode字符串文字只需要TSQL中的N''。

第二,如果你想返回選定SrNr,使用ExecuteScalar()

+0

謝謝@devio它通過使用ExecuteScalar() – Somnath

相關問題