为什么不行啊?ADOQuery怎么用啊?

redrd 2003-11-05 09:21:31
用ADOQuery操作啊Access2000数据库,SQL写法有什么要求啊?我下面的写法老是说UPDATE语法错误???
String sSql;
try
{
sSql = "UPDATE [Study] SET (Title=:@Title,Keyword=:@Keyword,ClassID=:@ClassID,Date=:@Date) WHERE ID=:@ID";
frmMain->ADOQuery1->SQL->Clear();
frmMain->ADOQuery1->SQL->Add(sSql);
frmMain->ADOQuery1->Parameters->ParamByName("@Title")->Value = sTitle;
frmMain->ADOQuery1->Parameters->ParamByName("@Keyword")->Value = sKeyword;
frmMain->ADOQuery1->Parameters->ParamByName("@ClassID")->Value = iClassID;
frmMain->ADOQuery1->Parameters->ParamByName("@Date")->Value = dDate;
frmMain->ADOQuery1->Parameters->ParamByName("@ID")->Value = m_iID;
frmMain->ADOQuery1->ExecSQL();
}
catch(Exception&E)
{
String sErrorInfo=(String)E.ClassName()+":\n"+E.Message+"\t";
MessageBox(Handle,sErrorInfo.c_str(),"写数据时出错",MB_ICONWARNING);
}
...全文
44 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Libran 2003-11-06
  • 打赏
  • 举报
回复
解释一下:
“如果字段Date为日期/时间类型...若以AnsiString类型赋值,应为合法格式,并包在''或##中”
——这是指在用AnsiString结合成SQL语句中的时候,例如:
AnsiString date, sql;
sql = "Update Table1 Set [date] =" + date; //这里,date应为"'2003-11-06'"
//或"#2003-11-06#"的格式
Query1->SQL->Clear();
Query1->SQL->Add(sql);
...
如果是使用参数赋值则没有关系

这里的问题主要就是上面的两点:
1,SET后面不能加括号
2,Date为保留字,作为字段名要写成[Date]

故应改为:
sSql = "UPDATE [Study] SET Title=:@Title,Keyword=:@Keyword,ClassID=:@ClassID,[Date]=:@Date WHERE ID=:@ID";
...

earwig20002000 2003-11-06
  • 打赏
  • 举报
回复
borland_boyd的解法比较实际,便于接受
Libran()的解法就是我们常常遇到的问题(当字段名和关键字相同时 )
borland_boy 2003-11-06
  • 打赏
  • 举报
回复
这么写就对了

sSql = "UPDATE Study SET Title=:t1,Keyword=:t2,ClassID=:t3,Date=:t4 WHERE ID=:t5";
frmMain->ADOQuery1->SQL->Clear();
frmMain->ADOQuery1->SQL->Add(sSql);
frmMain->ADOQuery1->Parameters->ParamByName("t1")->Value = sTitle;
frmMain->ADOQuery1->Parameters->ParamByName("t2")->Value = sKeyword;
frmMain->ADOQuery1->Parameters->ParamByName("t3")->Value = iClassID;
frmMain->ADOQuery1->Parameters->ParamByName("t4")->Value = dDate;
frmMain->ADOQuery1->Parameters->ParamByName("t5")->Value = m_iID;
frmMain->ADOQuery1->ExecSQL();
Libran 2003-11-06
  • 打赏
  • 举报
回复
1,SET后面不能加括号
2,Date为保留字,作为字段名要写成[Date]
所以,应改为:
sSql = "UPDATE [Study] SET Title=:@Title,Keyword=:@Keyword,ClassID=:@ClassID,[Date]=:@Date) WHERE ID=:@ID";

另外,如果字段Date为日期/时间类型,赋值应用TDateTime类型;若以AnsiString类型赋值,应为合法格式,并包在''或##中(如"'2003-11-06'"或"#2003-11-06#")
ljianq 2003-11-06
  • 打赏
  • 举报
回复
日期型也需要加单引号"'";
ljianq 2003-11-06
  • 打赏
  • 举报
回复
字符串需要加单引号"'";
teatool 2003-11-06
  • 打赏
  • 举报
回复
如果是在ACCESS中,日期要用#号,即#日期#

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧