C# 查询sql时候@的用法

我看到了三种记录语句的方式,感觉引用的不太一样,于是想问一问。1、stringsql=string.Format("select*fromDatawhereID={0}"... 我看到了三种记录语句的方式,感觉引用的不太一样,于是想问一问。

1、string sql = string.Format("select * from Data where ID={0}", ID);

2、string sql = @"insert into ID(ID,BeginDate,EndDate) values (@A0,@A1,@A2) Select Name = @@identity";

3、string sql = @"select Name,Mobile,ID from Data where BeginDate > '"+begin+"' and EndDate <'"+end+"'order by BeginDate";

我不太理解第二种的意思,因为我把begin换成@begin再把引号去掉发现没有用,跳到异常。
而且也不知道第二种的@@indentity是什么意思,求指教。
展开
 我来答
薯片奥利奥
2013-11-14 · TA获得超过251个赞
知道小有建树答主
回答量:78
采纳率:100%
帮助的人:80.8万
展开全部

一般我们在进行数据库操作的时候,不推荐使用 字符串相加来构造sql语句,防止SQL注入。

所以一般用传参的方式。


例如 

using (SqlCommand cmd = sqlConnection.CreateCommand())
{
    cmd.CommandText = "select * from  AccountInfo where AccountName=@accountname";
    cmd.Parameters.Add(new SqlParameter("accountname", textBox1.Text));
 }

@accountname 作为参数,再在后面,把具体的数值,传入这个参数中。


在你的例子中,字符串 string 类型 前面加上@,

string sql = @"XXXXXX";

这样就可以不使用双斜线。。   因为C# 默认把单斜线当作转义符。

匿名用户
2013-11-14
展开全部
1:里面没有@符号 简简单单的sql查询语句 那个{0}是作为一个字符的替换 理解为把ID的指填入到{0}占位符的位置
2:第一个@表示后面的一个字符串里面不使用转义字符 这个转义字符多用于字符串表示文件路径的单斜杠 \ 如果不用@ 那么\就要表示成\\ 后面的@A0什么的是作为sql语句的参数变量
3:第一个@同2的第一个意思 但是你把begin就是一个字符串变量这个变量是c#代码里面的 你当然不能加@ 否则一定会出现异常错误的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友363f40a
推荐于2018-04-02 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:111万
展开全部
@转义符,表示后面的字符按转义处理。即比如反斜杠不用再前面加一个反斜杠了,等等。
@@indentity:SQL内置。实时返回最后一条记录的ID号。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小伙子_舟亢
2013-11-14 · TA获得超过604个赞
知道小有建树答主
回答量:943
采纳率:100%
帮助的人:548万
展开全部
就第一种我偶尔用,基本都走参数化了。学习了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c56cded
2013-11-14 · TA获得超过1940个赞
知道小有建树答主
回答量:870
采纳率:0%
帮助的人:245万
展开全部
@@indentity返回当前主键的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式