看一下这个问题,(在线)
const
SQLString = 'insert into use(用户名, 性别, 年龄, 所在单位, 联系地址, 联系电话, 注册日期, 借书次数, 未还书数, 可借书数)'
+ 'values(%s, %s, %s, %s, %s, %s, %s, 0, 0, 0)';
begin
DBPath := ExtractFilePath(Application.ExeName) + 'book.mdb';
ConnStr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBPath + ';Persist Security Info=False';
with DM.DataMod.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add(Format(SQLString, [Trim(stuname.Text),Trim(stusex.Text),Trim(stuage.Text),Trim(stujob.Text),Trim(stuadd.Text),Trim(stutel.Text),Trim(regdata.Text)]));
ConnectionString := ConnStr; X
ExecSQL;// <> 0 then ShowMessage('添加成功');
end;
self.Close;
end;
上面的代码有什么问题? 为什么我在文本框里输入数字的时候就没问题, 汉字就有问题? 我的数据库全部设置为文本了。
问题点数:20、回复次数:10Top
1 楼zhxr2003(Grancy)回复于 2003-11-04 17:07:48 得分 3
对于字符串处理需QuotedStr
SQL.Add(Format(SQLString, [QuotedStr(Trim(stuname.Text)),QuotedStr(Trim(stusex.Text)),Trim(stuage.Text),QuotedStr(Trim(stujob.Text)),QuotedStr(Trim(stuadd.Text)),QuotedStr(Trim(stutel.Text)),QuotedStr(Trim(regdata.Text))]));
若你的年龄字段设为VARCHAR型亦需QuotedStr
Top
2 楼Alanwn(天痴(日本人与狗不得回答问题))回复于 2003-11-04 17:14:11 得分 3
缺少引号,因为就是说你的类型不对Top
3 楼angle097113(深思不解)回复于 2003-11-04 17:25:36 得分 3
我觉得你的办法没有什么问题的呀!用参数来试试吧!Top
4 楼angelface(§<@#$&^%$>§)回复于 2003-11-04 17:50:09 得分 0
:) 但是我还是想知道为什么我的方法不行, 然后我在试试参数的方法Top
5 楼gmc007(江西的佬表)回复于 2003-11-04 17:59:49 得分 2
楼上有人说了啊:
回复人: Alanwn(天痴) ( ) 信誉:100 2003-11-04 17:14:00 得分:0
缺少引号!!
Top
6 楼47522341(睡到8:30)回复于 2003-11-04 18:08:03 得分 3
呵呵;不能将诸如0这种整形数直接赋值给字符型字段;Top
7 楼aiunong(凡)回复于 2003-11-04 18:13:57 得分 3
可以选判断类型,
再进行转化为字符串型.
不过Quotedstr很好的.Top
8 楼angelface(§<@#$&^%$>§)回复于 2003-11-04 18:15:57 得分 0
哪里缺少引号?
请指明一些可以吗?Top
9 楼angelface(§<@#$&^%$>§)回复于 2003-11-04 18:25:12 得分 0
OK QuotedStr可以解决,, 但是我的代码是哪的问题? 是少引号?Top
10 楼chinafanx(繁星)回复于 2003-11-04 23:22:30 得分 3
引号:
SQL.Add(Format(SQLString, ['''+Trim(stuname.Text)+''','''+Trim(stusex.Text)+''','''+Trim(stuage.Text)+''','''+Trim(stujob.Text)+''','''+Trim(stuadd.Text)+''','''+Trim(stutel.Text)+''','''+Trim(regdata.Text)+''']));Top




