如何将Unicode值作为select命令的参数传递

时间:2012-09-20 08:54:42

标签: asp.net sql

这是我的代码,但它返回-1值。 Name字段包含unicode值。

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

2 个答案:

答案 0 :(得分: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 ....因为非Sclar方法返回值SrNo和NonQuery在使用更新和插入查询时返回受影响的行

答案 1 :(得分:1)

首先,NQL仅在TSQL中用于Unicode字符串文字。

其次,如果您想要返回SELECTed SrNr,请使用ExecuteScalar()