ADOQuery.SQL.Add('Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)values('+ID+','''+name+''','''+sex+''','+department_ID+')')
说什么"string"和"integer"有问题,
再问下大家你在用向数据库里插数据的时候用什么方法啊
说什么"string"和"integer"有问题,
再问下大家你在用向数据库里插数据的时候用什么方法啊
解决方案 »
- Delphi 6调用C++写的DLL,全局变量当参数出错
- 根据数据库的数据画线,求教
- 关于quickrpt报表的一个小问题……
- 谁有写过ftp的server端和的程序
- 对treeview控件如何使用代码添加第一个节点??望各位大大帮忙解决
- 想去掉DBGrid中垂直和水平滚动条,但用了ShowScrollBar后。。。。。急。。。。。
- 关于“个体软件过程(psp)”的调查
- 新手提问:如何在程序里面让TRichEdit的某一行为选中状态?
- 如何把user.txt文件读出来,要将它转入数据库user.db中, 急!!!
- 图形问题,很急(第19天)!1分+500元人民币!
- 老师看不起我,大家帮帮我!
- 汇编集成编辑器开发
ADOQuery.SQL.Add('Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)
values('''+inttostr(ID)+''','''+name+''','''+sex+''','''+inttostr(department_ID)+''')');
这样应该可以存进去。你原来的写发肯定不对。那相当于把字符串+id+存进了字段peo_ID。
应该按name那样的字符串拼串。
我也是初学者。至于怎么拼数值变量的串我还没想到那!!
把数值转成字符串应该可以存。我试过了!!!
是整形,就这样
values('+inttostr(ID)+','''+name+''','''+sex+''','+inttostr(department_ID)+')')
把那句
'Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)values('+ID+','''+name+''','''+sex+''','+department_ID+')'
显示出来在数据库一执行就知道了
ADOQuery.SQL.Add('Insert into people(peo_ID,peo_Name,peo_Sex,department_ID)values(:ID+','''+name+''','''+sex+''',:department_ID+')')
ADOQuery.parameters.parabyname('ID').value:=strtoint(ID);
ADOQuery.parameters.parabyname('department_ID').value:=strtoint(department_ID);
属性记不太准,拼写可能有误,
begin
active:=false;
sql.clear;
sql.add(
'Insert into people(peo_ID,peo_Name,peo_Sex,department_ID) '
+'values(:id,:name,:sex,:depart_id) ');
//1 数据库id为Integer且ID变量为Integer
params.ParamByName('id').value :=ID;
//1 数据库id为varchar2且ID变量为Integer
params.ParamByName('id').value :=intToStr(ID);
params.ParamByName('name').asString :=strToInt(ID);
params.ParamByName('sex').asString :=strToInt(ID);
params.ParamByName('depart_id').asInteger :=strToInt(ID);
execSQL;
end;
其實類似的情況,只要樓主看看你最後形成的SQL語句,就會知道問題出在什麼地方
你写的是一个SQL语句,
你的SQL中有几上你的Delphi中的变量,如果想能编译,至少这些变量应该是字符串,或你反它转换成字符串,
建立使用参数来传递值,可以用于任何类型,而且不会出错。
ADOQuery.SQL.Clear();
ADOQuery.SQL.Add('INSERT INTO Table (Field1,Field2)VALUAS(:Field1,:Field2)');
ADOQuery.Parameters.ParamByName('Field1').Value='a';
ADOQuery.Parameters.ParamByName('Field2').Value=123;
ADOQuery.ExecSQL;
values('''+inttostr(ID)+''','''+name+''','''+sex+''','''+inttostr(department_ID)+''')'这样就没问题了!
如yifei1900(逸飞)兄的代码,
这种方式可以避免很多问题,如字符串中有特殊字符的情况。