CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

SQL语法错误,该怎么写呢?

楼主fdx2304()2005-04-28 13:14:48 在 Web 开发 / ASP 提问

我把Access转为SQL数据库,在留言部分出现错误,提示如下:  
  Microsoft   OLE   DB   Provider   for   SQL   Server   (0x80040E14)  
  在关键字   'User'   附近有语法错误。  
  /1/Went.asp,   第   6   行  
  第   6   行附近代码为  
  <%  
  Id=Session("UserName")  
  set   Rst   =   Server.CreateObject("ADODB.recordset")  
  sql="select   *   from   User   where   UserName='"&Id&"'"  
  rst.open   sql,conn,1,1                                                           此为第6行,是上面SQL语句错吗?  
  %>  
  是不是SQL2000语法不同与Access?,该如何改啊? 问题点数:20、回复次数:7Top

1 楼leo963258(我劝天公重抖擞,不拘一格降人才)回复于 2005-04-28 13:18:56 得分 10

sql2000   表要用[]  
  sql="select   *   from   [User]   where   UserName='"&Id&"'"   sql2000Top

2 楼yxzbbc(口 水)回复于 2005-04-28 13:20:44 得分 10

sql="select   *   from   [User]   where   UserName='"&Id&"'"  
   
   
   
  将ACCESS的数据库转化为SQL   SERVER的数据库的几点问题  
   
  1.ACCESS的数据库中的自动编号类型在转化时,sql   server并没有将它设为自动编号型,我们需在SQL创建语句中加上identity,表示自动编号!  
  2.转化时,跟日期有关的字段,SQL   SERVER默认为smalldatetime型,我们最好将它变为datetime型,因为datetime型的范围比smalldatetime型大。我遇见这种情况,用smalldatetime型时,转化失败,而用datetime型时,转化成功。  
  3.对此两种数据库进行操作的sql语句不全相同,例如:在对ACCESS数据库进行删除纪录时用:"delete   *   from   user   where   id=10",而对SQL   SERVER数据库进行删除是用:"delete   user   where   id=10".  
  4.日期函数不相同,在对ACCESS数据库处理中,可用date()、time()等函数,但对  
  SQL   SERVER数据库处理中,只能用datediff,dateadd等函数,而不能用date()、time()等函数。  
  5.在对ACCESS数据库处理中,sql语句中直接可以用一些VB的函数,像cstr()函数,而对SQL   SERVER数据库处理中,却不能用。    
   
   
  一,首先,我说的是在ACCESS2000,SQL2000之间转换,其他的我也还没有尝试过,希望大家多多试验,肯定是有办法的;  
  二,转换的方法  
  1,打开”控制面板“下”管理工具“中的”数据库源“;  
  2,按”添加“添加一个新的数据源,在选择栏里选”Driver   do   microsoft   Access  
  (*.mdb)”,完成后将出现一个框,  
   
  在”数据库源“里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库地址和选中(注意,请先备份自己的ACCESS数据库),然后确定。  
  数据源在这里建好了,剩下转换了。  
   
  3,打开SQL2000企业管理器,进入数据库,新建一个空的数据库“ABC”;  
  4,选择新建立的数据库,按鼠标右键,选择“所有任务”下“导入数据”,按“下一步”继续;  
  5,在数据库源下拉但中选择”Driver   do   microsoft   Access(*.mdb)“,在”用户/系统DSN“中,选种你刚才添加的”ABC“,按   ”下一步“;  
  6,“目的”不需要修改,选择服务器(一般下为自己的本机"local",也可以选择服务器地址或者局域网地址,确定你的权限是否可以操作,),"使用WINDOWS   身份验证"指用自己的系统管理员身份操作,"使用SQL身份操作验证"可以用于网站的操作,推荐用后者;  
  7,选上"使用SQL身份操作验证"后,填写你的用户名和密码,我自己选择的是系统默认号码"sa","****",数据库选择刚新建的"ABC",按"下一步";  
  8,这一步的两个单项选择,"从数据源复制表和视图"与"用一条查询指令指定要传输的数据",选择前者,按"下一步"继续;  
  9,这里将出现你自己ACCESS数据库的表,按"全选"后,下一步;  
  10,"DTS导入/导出向导",看"立即运行"被选中按"下一步",  
  11,按"完成"继续;  
  12,这个步骤你将看到你的数据被导入SQL2000里面,当出现"已经成功把XXX个表导入到数据库"的字样,而且所有的表前面都有绿色的勾,就表示成功导入所有数据,如果中途出现问题或者表前面有红色的叉的话,说明该表没有成功导入,这时就要回去查看自己的操作是否正确了.  
   
  三,数据修改  
  1,由于SQL2000里面没有"自动编号",所以你的以"自动编号"设置的字段都会变成非空的字段,这就必须手工修改这些字段,并把他的"标示"选择"是",种子为"1",增量为"1",  
  2,另外,ACCESS2000转换成SQL2000后,原来属性为"是/否"的字段将被转换成非空的"bit",这时候你必须修改成自己想要的属性了;  
  3,另外,大家要注意对时间函数的把握.ACCESS与SQL是有很多不同的.      
  Top

3 楼menrock(教坏细路)回复于 2005-04-28 13:20:52 得分 0

在关键字   'User'   附近有语法错误。  
  关键字要用[]括起来Top

4 楼ryuginka(一米八五的猪)回复于 2005-04-28 13:26:43 得分 0

字段名称要避免和系统关键字冲突Top

5 楼fdx2304()回复于 2005-04-28 13:37:06 得分 0

先多谢大家,改过来却出现这种错误,晕倒:  
  ADODB.Field   (0x80020009)  
  BOF   或   EOF   中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。  
  /1/Went.asp  
  怎么不提示哪一行啊?这个错误是什么意思啊?再麻烦大家了.Top

6 楼fdx2304()回复于 2005-04-28 14:09:45 得分 0

这个ASP只有以下代码有提到eof  
  set   rs_links=server.createobject("adodb.recordset")  
  sqltext4="select   top   10   *   from   links   order   by   id   desc"  
  rs_links.open   sqltext4,conn,1,1  
   
     
  %>  
                                              <TABLE   cellSpacing=0   cellPadding=0   width="100%"    
  border=0>  
                                                  <TBODY>  
                                                      <TR   vAlign=center>    
                                                          <TD   height=2   colSpan=2><IMG   height=2    
                                                              src="img/1x1_pix.gif"   width=10></TD>  
                                                      </TR>  
                                                      <%i=0  
  do   while   not   rs_links.eof%>  
                                                      <TR   vAlign=center>    
                                                          <TD    
                                                              height=22   colspan="2">   <div   align="center"><a   href="<%=rs_links("link")%>"   title="<%=rs_links("note")%>"target="_blank"><%=rs_links("name")%></a></div></TD>  
                                                      </TR>  
                                                      <%       rs_links.movenext  
  i=i+1  
  if   i=10   then   exit   do  
  loop  
  rs_links.close   %>Top

7 楼mind_1220(大灰狼)回复于 2005-04-28 14:14:15 得分 0

1、第一个错误是User是SQLSERVER的关键字   所以需要用[]  
  2、是由于你的rs并没有获得值   你就对rs操作了。这种情况一般有两种情况  
          a,sql语句错误(我说的不是语法错误,而是条件等错误)  
          b,你需要先判断rs是否有值  
   
  方法:  
  if   rs.eof   or   rs.bof   then  
  无值  
  else  
  有值  
  end   ifTop

相关问题

  • sql 语法错误?
  • 如何捕获SQL语法错误?
  • ADO +SQL 中的select ,有语法错误
  • 语法错误???
  • 语法错误
  • 语法错误
  • 语法错误???
  • 问一下这个SQL的语法错误错在哪?
  • 我的错误在哪儿?关于SQL语句语法
  • [Microsoft][ODBC SQL Server Driver]语法错误或访问冲突??

关键词

  • sql2000
  • 数据库
  • 函数
  • 语法
  • 字段
  • 语句
  • 数据
  • 转化
  • 转换
  • 选择

得分解答快速导航

  • 帖主:fdx2304
  • leo963258
  • yxzbbc

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo