当前位置:主页>delphi7/进销存和数据库> 文章内容

delhpi 7 +ado +sql serve 做的三层应用中,用sql语句提交,中文字符只保存一半,为什么

发布时间:2010-01-22 | QQ免费站
1楼: 问题是:我用delhpi 7 +ado +sql serve 做的三层应用中,在数据保存中,用‘insert into 表名 set 列名=:lm’ parameterbyname(lm).assting:=edit1.text 就这么简单的语句,可是在edit1.text中输入中文的时候,提交后,库中只有字符串的一半,例如edit1.text=“数据“,而提交后,库中只有‘数‘一个字 而当edit1.text 是英文或数字的时候,提交正常 想其各位大侠给指点,指点,越快越好

字串7

2楼: 请大家帮忙,帮忙

字串8

3楼: 是不是数据字段不够长度啊?中文比英文所占字节数要多!
字串9

4楼: insert into 表名 set 列名=:lm’ 语法有问题吧!!! 应该是: insert into 表名(列名)Values(:lm) ParameterByName(Lm).Values :=Trin(edit1.text)
字串8

5楼: 不是这样的,数据字段够长,char 40 而且现象是不管你输入多少汉字,它都只取一半,比如“中文字符”,它就提交“中文”,“中文”就提交“中”

字串2

6楼: 刚才比较急写错了,程序中是 insert into 表名(列名)Values(:lm) ParameterByName(Lm).Values :=Trim(edit1.text) 这个语句

字串3

7楼: 请大家给指点指点,是不是我在建立数据库中有什么错误, 字串7

8楼: 有夠奇怪的問題 把Trim(edit1.text),去掉,改成直接:=‘中文‘; 如果沒有問題,就是edit1的問題,檢查一下,實在不行,刪掉重新放一個 如果還有問題那就改語法試試 sql.add(‘insert into tableA (field1) values(‘‘‘+trim(edit1.text)+‘‘‘)‘); 如果還不行....那我就再想想 字串3

9楼: Query.Close; Query.SQL.Clear; Query.SQL.Add(‘Insert into Bbs(Name)Values(:LM)‘); Query.Parameters.ParamByName(‘Lm‘).Value:=Trim(Edit1.Text); Query.ExecSQL; 我刚试过,是好的啊!你再看看上面的 字串5

10楼: 我跟踪了一下程序, Query.Close; Query.SQL.Clear; Query.SQL.Add(‘Insert into Bbs(Name)Values(:LM)‘); Query.Parameters.ParamByName(‘Lm‘).Value:=Trim(Edit1.Text); 在这里查看了一下Query.Parameters.ParamByName(‘Lm‘).Value就是 Trim(Edit1.Text);, .... Query.ExecSQL; 到了这里看数据库就成了edit1.text 的一半了
字串7

11楼: 是不是在sql serve在建立数据库的时候,要选择字符集呀,你们都是用默认的设置么 字串1

12楼: 数据库的字符集改变过了没有? 字串5

13楼: 没有 字串9

14楼: sql.add(‘Insert into Bbs (Name) Values(‘‘‘+trim(edit1.text)+‘‘‘)‘); 試試看
字串7

15楼: 是的,一般都用默认的设置!问题就出在你的数据库表中结构啊!!!你不防再建立一个新表,试一下啊!!!
字串1

16楼: 顶

字串4

17楼: insert into 表名(列名)Values(:lm) ParameterByName(Lm).Size :=Length(Trim(edit1.text)) ParameterByName(Lm).Values :=Trim(edit1.text)

字串9

18楼: 用 varchar 或者 nvarchar 字串9

19楼: 俺写的三层程序根本就不存在这个问题,有空看看我的待答问题。 字串9

20楼: 用nchar试试 先再查询分析器中执行一下看看
字串1

21楼: 偶以前做的好像没有这个问题啊!费解 字串3

22楼: 顶 字串5

23楼: 用 sql.add(‘Insert into Bbs (Name) Values(‘‘‘+trim(edit1.text)+‘‘‘)‘); 应该没问题的 字串5

24楼: 谢谢大家,我直接提交两次,不过是很笨,可是找不到是那里的错。 字串7