在事务中不能使用SQL语句吗?我这样写错误在那里?
void __fastcall TForm1::Transaction1Click(TObject *Sender)
{
ADOConnection1->BeginTrans();
DisableMenuItems();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE kaihubiao SET num="+Edit1->Text);
ADOQuery1->ExecSQL();
}
以上代码在运行中出现错误提示,要么违反主键不能重复,要么说我'='那里有语法错误!究竟是什么问题!请大家帮我看一下好吗?注:我用SQL SERVER,其中num是一个字段名,类型为char,设置为主键!
问题点数:20、回复次数:9Top
1 楼zjqc(靓仔强-这个人不懂编程的,不要信他!)回复于 2002-05-28 19:27:29 得分 0
对了!这个DisableMenuItems();只是让一些菜单项启动和不能使用而已!跟这个应该没有关系!Top
2 楼WhyAndAnswer(明白)回复于 2002-05-28 19:37:26 得分 6
num是主键,当然不能update,除非你把这个约束去掉。Top
3 楼ken_henderson( )回复于 2002-05-28 19:50:32 得分 6
你没有where子句,把所有主键值都设为同一个值当然不行,主键不能重复的呀Top
4 楼appleIIappleII()回复于 2002-05-28 19:59:20 得分 6
如下:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE kaihubiao SET num="+Edit1->Text);
ADOQuery1->SQL->Add(" from kaihubiao where 条件");
ADOQuery1->ExecSQL();Top
5 楼zjqc(靓仔强-这个人不懂编程的,不要信他!)回复于 2002-05-28 20:12:30 得分 0
非常感谢!谢谢!然后我尽我的力量告诉一下大家我的体验!事务处理的BEGINTRANS跟COMMITRRANS只是一个标志性的东西,里面修改的还是要自己来写代码!大家一起努力!谢谢大家Top
6 楼zjqc(靓仔强-这个人不懂编程的,不要信他!)回复于 2002-05-28 20:18:28 得分 0
对了!我想实现的是对当前指向那个记录的num值进行修改!怎么办?如果用一个WHERE条件的话只能对一个修改而已啊!我是指向那个记录就修改那个记录那里的num值啊!我还是不能解决!这个SQL语句怎么写呢?Top
7 楼wyawxj(清风[WY-FLY])回复于 2002-05-28 20:19:02 得分 2
呵呵,zjqc不错嘛Top
8 楼zjqc(靓仔强-这个人不懂编程的,不要信他!)回复于 2002-05-28 20:22:13 得分 0
死人!你笑人家!人家不理你了!嗯。。。。。(猜我是不是女孩子)Top
9 楼zjqc(靓仔强-这个人不懂编程的,不要信他!)回复于 2002-05-28 20:34:00 得分 0
算了!我决定如果要我这样不要用SQL了!可以用ADOTABLE直接让那个值等于我想修改的值就行了!就这样决定!我听邓爷爷说过,不管白猫黑猫。
这个问题就这样停止!总结一下!我的错误!
因为没有设置条件,对所有记录更新全部值,当然错!◎谢谢!结贴!Top




