2

这是我的代码,但它返回-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; 
      }
   }
4

2 回答 2

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

于 2012-09-20T08:56:53.953 回答
1

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

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

于 2012-09-20T09:00:09.097 回答