VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 950|回复: 9

请问这两种数据库查询语句的写法区别?

[复制链接]

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 22:30:01 | 显示全部楼层 |阅读模式
我在以二进制上传图片到数据库时,使用sql = insert into DD (dd) values ('"+dd+"')";无法显示,但换成sql=insert into DD (dd) values (@dd);就可以正常显示。
是不前者不支持二进制上传?还是其他什么原因?
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-4 22:33:01 | 显示全部楼层
没试过这个,帮你顶把
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-4 22:39:01 | 显示全部楼层
后者用的是存储过程
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-4 23:00:01 | 显示全部楼层
后者不是存储过程,只不过表示参数。
回复

使用道具 举报

0

主题

64

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-1-4 23:42:01 | 显示全部楼层
本来这是asp.net论坛,不方便讨论深入的数据库问题。你的问题跟ado.net有点关系,就简单回答一下:

你的第一种方式,假设语法是对的,那么编译器首先把变量bb转换为字符串(使用对象的ToString方法),然后把字符串组合进sql变量。你可以设置断点看看sql变量的结果是什么,看看发送给数据库的命令到底是不是你要表达的提交二进制图片数据的意思。

第一种方式中sql根本不是正确的逻辑含义。

第二种方式很标准,也很清楚,ado.net的SQL命令参数本来就是这么设计的,没有什么可说的。
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-5 00:24:01 | 显示全部楼层
这里的变量bb是byte[]类型。
我想确定一下的是:假设一切正常,用第一种方式可以上传二进制数据吗?
回复

使用道具 举报

1

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-5 10:03:01 | 显示全部楼层
顶!
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-5 18:45:01 | 显示全部楼层
也可能是''的关系
回复

使用道具 举报

0

主题

12

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2020-3-9 18:15:01 | 显示全部楼层
第一种方式可以上传二进制数据不可以.我用过c#向数据库里面写二进制数,必须定义成二进制类型.而且不可以加''.
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-26 21:30:01 | 显示全部楼层
1.insert   into   DD   (dd)   values   ( ""+dd+" ")"错了,我晕,,,是单引号
insert   into   DD   (dd)   values   ( "'+dd+" ')";
2.sql=insert   into   DD   (dd)   values   (@dd)中的@自动把单引号加上了,这就是@的功能,
@还可以用由地址的表示,@C:\asdfa.exe与c:\\asdfa.exe相等
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表