首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回空行和/或奇怪行的SQL SELECT语句(vb.net格式)

返回空行和/或奇怪行的SQL SELECT语句(vb.net格式)
EN

Stack Overflow用户
提问于 2013-04-06 03:48:10
回答 5查看 4.3K关注 0票数 1

我使用的是VS Express 2012、SQL Server 2012。我有一个表(computers)和两行10列(HaHu_ID、Serial_Number、品牌、型号、操作系统、处理器、硬盘、内存、ST、速度)。

我已经在这个网站上阅读了尽可能多的帖子,试图创建到SQL Server的vb.net接口。我成功地将它们连接在一起,并使用

代码语言:javascript
运行
复制
SELECT * FROM computers

但是当我尝试其他命令时,比如

代码语言:javascript
运行
复制
SELECT * FROM computers 
WHERE 'HaHu_ID' = '101'

它返回一个空的DataGridView行!我试着把'HaHu_ID‘改成随机的,但是仍然是空行。显示了正确的列名,但行都为空。

当我尝试另一个命令"SELECT 'HaHu_ID','Brand‘FROM computers“时,它返回:

代码语言:javascript
运行
复制
Column1---|--Column2

-HaHu_ID--|--Brand
-HaHu_ID--|--Brand

列名已更改为"Column1和column2“,如您所见,各行都填充了应该是列名的内容!令人沮丧的是,我尝试了"SELECT 'HaHu','Brand_ID‘FROM computers“(数据库中不存在的列),结果返回:

代码语言:javascript
运行
复制
Column1---|--Column2

---HaHu----|--Brand_ID
----HaHu---|--Brand_ID

我回到原来的SELECT * FROM computers,它又可以工作了!

下面是我的代码:

代码语言:javascript
运行
复制
Dim cs as New SqlConnection...
cs.Open()
'Dim da2 as New SqlDataAdapter("SELECT * FROM computers WHERE 'HaHu_ID' = '101'", cs)
Dim da2 as New SqlDataAdapter("SELECT * FROM computers", cs)
Dim table as New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
da2.Fill(table)
BindingSource1.DataSource = table
dataGrid1.DataSource = BindingSource1
cs.Close()

(我无法复制和粘贴它,因为我现在在另一台计算机上)。所以select * from computers语句运行得很好,但是我一尝试其他方法,它就不起作用了。

为什么会这样呢?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-06 03:52:48

不要用单引号将列名括起来。其中HaHu_ID = '101‘是正确的。

票数 1
EN

Stack Overflow用户

发布于 2013-04-06 04:01:20

单引号用于指定字符或字符串。下面的SQL语句选择字符串'HaHu_ID‘和字符串'Brand',并为computers表中的每条记录返回。由于没有分配别名,因此服务器返回默认值Column1、Column2等。

代码语言:javascript
运行
复制
SELECT 'HaHu_ID', 'Brand' FROM computers

要转义列名,请使用方括号,如下所示:

代码语言:javascript
运行
复制
SELECT [HaHu_ID], [Brand] FROM [computers]
票数 1
EN

Stack Overflow用户

发布于 2013-04-06 04:13:26

对,您正在比较这两个字符串:

代码语言:javascript
运行
复制
SELECT * FROM computers  WHERE 'HaHu_ID' = '101'

尝试:

代码语言:javascript
运行
复制
SELECT 'foo' FROM computers WHERE HaHu_ID = '101'  

(假设它是字符类型的列,而不是数字)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15842322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档