最近在用Access数据库,在连接查询时碰到一些问题,总结如下:
(1) Access数据库的连接查询只能用join关键字, 不能用sql server的另外一种方式。
select top 9 Article.ID,Tittle,Content,UserID,UserCode,User.UserName,ImgUrl,ArticleTypeID,ClickNumbers,CommentNumbers,CreateTime,AccessTime FROM Article left join User on Article.UserID=User.ID where ArticleTypeID=3
select top 9 Article.ID,Tittle,Content,UserID,UserCode,User.UserName,ImgUrl,ArticleTypeID,ClickNumbers,CommentNumbers,CreateTime,AccessTime FROM Article, User Article.UserID=User.ID and ArticleTypeID=3 // 错误写法
(2)在连接查询语句中,对于任何一个两个表中都有的字段必须进行表名标示,对于条件字句必须进行表名标志。
select top 9 Article.ID,Tittle,Content,UserID,UserCode,User.UserName,ImgUrl,ArticleTypeID,ClickNumbers,CommentNumbers,CreateTime,AccessTime FROM Article left join User on Article.UserID=User.ID where ArticleTypeID=3 // 必须进行表名标示
(3)当查询语句中出现Microsoft Jet 数据库引擎在 SQL 语句中使用的所有保留字时, 会出现在数据库查询分析器中执行没错,但在代码中执行报错的情况。
select top 9 Article.ID,Tittle,Content,UserID,UserCode,User.UserName,ImgUrl,ArticleTypeID,ClickNumbers,CommentNumbers,CreateTime,AccessTime FROM Article left join User on Article.UserID=User.ID where ArticleTypeID=3
这个语句在查询分析器中执行没有问题,但是在代码中会出现 FROM 子句语法错误 的异常。具体原因是user是数据库引擎的保留字,要想正常通过,只要在保留字上加上中括号即可。
select top 9 Article.ID,Tittle,Content,UserID,UserCode,User.UserName,ImgUrl,ArticleTypeID,ClickNumbers,CommentNumbers,CreateTime,AccessTime FROM Article left join [User] on Article.UserID=User.ID where ArticleTypeID=3
Microsoft Jet 数据库引擎还有一些其他保留字, 以后遇到在逐步补充。