sql 中的 N'abc' 写法,怎么应用到参数(SqlParameter)中

yuxh81 2011-04-23 11:53:35

DataParameter[] parms = new DataParameter[] {
new DataParameter("@uid", SqlDbType.NVarChar,uid),
new DataParameter("@pwd", SqlDbType.NVarChar,pwd)
};

string sql = "select count(*) from tb_admin where uid=@uid and pwd=@pwd ";


代码如上,在哪里加 N ,加在上面会变成将N变成字符串,加在下方会报sql错误
...全文
405 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yuxh81 的回复:]
谢谢各位了,原因没有问题,也就是说 SqlParameter 已经自动包含了(前缀N)这种模式

所以需要是参数化查询就可以忽略前缀N,而非参数化查询那还是要的

唉,真是晕,自己没有验证一下就来瞎发贴!!

不管怎么说,谢谢各位了!!
[/Quote]9楼说的很清楚
yuxh81 2011-04-23
  • 打赏
  • 举报
回复
谢谢各位了,原因没有问题,也就是说 SqlParameter 已经自动包含了(前缀N)这种模式

所以需要是参数化查询就可以忽略前缀N,而非参数化查询那还是要的

唉,真是晕,自己没有验证一下就来瞎发贴!!

不管怎么说,谢谢各位了!!
yuxh81 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ssp2009 的回复:]

DataParameter("@uid", SqlDbType.NVarChar,uid)你这里都SqlDbType.NVarChar了,再把数据库字段类型改为nvarchar就可以。
[/Quote]

谢谢你的回复!

请看6楼我的回复,我已经实现了第1条
现在是那个前缀 N 不知道加在哪里,怎么加?
yuxh81 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ssp2009 的回复:]

C# code
DataParameter[] parms = new DataParameter[] {
new DataParameter(N"@uid", SqlDbType.NVarChar,uid),
new DataParameter(N"@pwd", SqlDbType.NVarChar,pwd)
};

……
[/Quote]

N加在这里(这里表示参数名),会报错,N未定义!!
我试过了,加在引号里面也不行,会报sql错误!
快溜 2011-04-23
  • 打赏
  • 举报
回复
DataParameter("@uid", SqlDbType.NVarChar,uid)你这里都SqlDbType.NVarChar了,再把数据库字段类型改为nvarchar就可以。
yuxh81 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 maco_wang 的回复:]

存储过程中可以这样赋值:
SQL code

declare @t nvarchar(20)
set @t=N'aaaa'
select @t
[/Quote]

请看我顶部的代码,谢谢!
yuxh81 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acherat 的回复:]

DataParameter[] parms = new DataParameter[] {
new DataParameter("@uid", SqlDbType.NVarChar,uid),
new DataParameter("@pwd", SqlDbType.NVarChar,pwd)
};

……
[/Quote]

试了,这样不行,这相当于没有使用参数(SqlParameter)!!
yuxh81 2011-04-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ssp2009 的回复:]

你的程序好像没有问题。。。
[/Quote]

问题的根源是sql server存储韩文!!

现在我的方案是:

1:将所有varchar类型,改成nvarchar

2:将所有sql语句参数前加上前缀 N

关键是如果是用参数SqlParameter,不知道怎么加,加在哪里!
快溜 2011-04-23
  • 打赏
  • 举报
回复
你的程序好像没有问题。。。
快溜 2011-04-23
  • 打赏
  • 举报
回复
DataParameter[] parms = new DataParameter[] { 
new DataParameter(N"@uid", SqlDbType.NVarChar,uid),
new DataParameter(N"@pwd", SqlDbType.NVarChar,pwd)
};

string sql = "select count(*) from tb_admin where uid=@uid and pwd=@pwd ";
AcHerat 2011-04-23
  • 打赏
  • 举报
回复
楼主确定uid是字符型? SQL里怎么定义uid的

string sql = "select count(*) from tb_admin where uid="+@uid+" and pwd=N'"+@pwd+"'";

叶子 2011-04-23
  • 打赏
  • 举报
回复
存储过程中可以这样赋值:

declare @t nvarchar(20)
set @t=N'aaaa'
select @t
AcHerat 2011-04-23
  • 打赏
  • 举报
回复
DataParameter[] parms = new DataParameter[] {
new DataParameter("@uid", SqlDbType.NVarChar,uid),
new DataParameter("@pwd", SqlDbType.NVarChar,pwd)
};

string sql = "select count(*) from tb_admin where uid=N'"+@uid+"' and pwd=N'"+@pwd+"'";

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧