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