大侠!再次请教你一个问题!关于用delphi的ADO组件对access数据库插入数据的问题!纠结了一个星期了!
我现在已知的对数据库插入手段:一个是adoquery.append:query.fieldbyname('a').asstring:=trim(cpmessage.tex...
我现在已知的对数据库插入手段:
一个是
adoquery.append:
query.fieldbyname('a').asstring:=trim(cpmessage.text)
adoquery.post
另一个是
query1.SQL.Add('insert into cpmessage values(:a,:b)');
query1.parambyname('a').AsString:=trim(proname.Text);
query1.ParamByName('b').AsFloat:=strtofloat(trim(price.Text));
query1.ExecSQL
第一种方法我没有蓝本可以看的,发现我无法定位操作的表名。。。不知道怎么指定表明
第二种方法代码中的SQL语句在access中可以执行,但是放在代码里面就报错,错误如图
组件属性和代码都没错,我也能完全读懂了,知道实现机制了,可是就是实现不了。。。。。
我想请问,这代码为什么会实现不了呢?
还能有什么别的高效稳定的方法或使用别的组件可以实现数据插入的方法吗?
数据库名是system表名cpmessage,表中两个字段cpname和cpmoney,ADO组件ADOQuery 展开
一个是
adoquery.append:
query.fieldbyname('a').asstring:=trim(cpmessage.text)
adoquery.post
另一个是
query1.SQL.Add('insert into cpmessage values(:a,:b)');
query1.parambyname('a').AsString:=trim(proname.Text);
query1.ParamByName('b').AsFloat:=strtofloat(trim(price.Text));
query1.ExecSQL
第一种方法我没有蓝本可以看的,发现我无法定位操作的表名。。。不知道怎么指定表明
第二种方法代码中的SQL语句在access中可以执行,但是放在代码里面就报错,错误如图
组件属性和代码都没错,我也能完全读懂了,知道实现机制了,可是就是实现不了。。。。。
我想请问,这代码为什么会实现不了呢?
还能有什么别的高效稳定的方法或使用别的组件可以实现数据插入的方法吗?
数据库名是system表名cpmessage,表中两个字段cpname和cpmoney,ADO组件ADOQuery 展开
3个回答
展开全部
添加一个ADOConnection1,设置一下,应该会的吧(这里指定数据库的)
添加一个ADOQuery1,设置SQL属性:select * from tablename,我一般都直接写死的,再设置active为true, 有问题的话,没有启动成功的话,检查一下,然后下面是添加数据的代码:
//****************添加数据**********************************************
ADOQuery1.Insert;
ADOQuery1['这里是表中的列名']:=Edit1.Text;
ADOQuery1['这里是表中的列名']:=Edit2.Text;
ADOQuery1.Post;
Application.MessageBox('添加成功','恭喜',0);
我有个做了一半的源码,你可以拿来研究一下,需要的话,留邮箱,谢谢
添加一个ADOQuery1,设置SQL属性:select * from tablename,我一般都直接写死的,再设置active为true, 有问题的话,没有启动成功的话,检查一下,然后下面是添加数据的代码:
//****************添加数据**********************************************
ADOQuery1.Insert;
ADOQuery1['这里是表中的列名']:=Edit1.Text;
ADOQuery1['这里是表中的列名']:=Edit2.Text;
ADOQuery1.Post;
Application.MessageBox('添加成功','恭喜',0);
我有个做了一半的源码,你可以拿来研究一下,需要的话,留邮箱,谢谢
追问
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('insert into cpmessage(cpname,cpmoney) values(:a,:b)');
ADOQuery2.Parameters.ParamByName('a').Value:=trim(proname.Text);
ADOQuery2.Parameters.ParamByName('b').Value:=strtofloat(trim(price.Text));
ADOQuery2.ExecSQL;
谢谢!我已经这样做好了!之前我是直接在ADOQuery的Connectionstring里面做的连接,请问如何捕捉对于关键字重复的异常呢?
追答
试试用try except
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
展开全部
第一个,你用的不是adotable,所以不适合用post
第二个,(错误信息很明确)你的query根本还没有连接数据库。具体做法可以放一个adoconnection,然后设定连接串,connected:=true; 之后再做你的代码中的insert。
第二个,(错误信息很明确)你的query根本还没有连接数据库。具体做法可以放一个adoconnection,然后设定连接串,connected:=true; 之后再做你的代码中的insert。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一种方法应该在DataModule里定义的,你打开Data MOdule的内容应该可以看见对象表名.及有关连接内容.
第二种方法,是因为你的Sql语句错误,无法进行这个操作.可以代码改为如下:
query1.SQL.Add('insert into cpmessage(cpname,cpmoney) values(:a,:b)');
query1.parambyname('a').AsString:=trim(proname.Text);
query1.ParamByName('b').AsFloat:=strtofloat(trim(price.Text));
query1.ExecSQL
第二种方法,是因为你的Sql语句错误,无法进行这个操作.可以代码改为如下:
query1.SQL.Add('insert into cpmessage(cpname,cpmoney) values(:a,:b)');
query1.parambyname('a').AsString:=trim(proname.Text);
query1.ParamByName('b').AsFloat:=strtofloat(trim(price.Text));
query1.ExecSQL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询