Delphi问题堆叠

问题1.ADOQuery错误:ADOQuery1:commandtext does not return a result set<wbr></wbr>
程序内容: <wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.Close; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.SQL.Clear; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.SQL.Add('insert into DBhomework values('+Edit1.Text+','+Edit2.Text+','+ComboBox1.Text+','+Edit3.Text+','+Edit4.Text+')'); </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.Open; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">解决方法: </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">ADOQuery1.Open; 這行改成 ADOQuery1.ExecSQL; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">Select 之類的 SQL 语句才用 ADOQuery1.Open; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">附: </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">在select中用open方法,是正确的,但是在insert中代码能够执行,只是显示了上面的错误信息:ADOQuery1:CommandText does not return a result set,后来才知道ExecSQL方法是执行,不会要求SQL服务器给一个返回值,而对于select则能够使用open方法,有返回值。</font><wbr><br><br><font style="LINE-HEIGHT: 1.3em" color="#ff0000">问题2.ADOQuery错误:在此上下问中不允许使用名称"张三"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。</font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">程序内容: </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.Close; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.SQL.Clear; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.SQL.Add('insert into DBhomework(学号,姓名,性别,手机号码,班级) values('+Edit1.Text+','+Edit2.Text+','+ComboBox1.Text+','+Edit3.Text+','+Edit4.Text+')'); </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000"> ADOQuery1.ExecSQL; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">其中,“姓名”和“性别”的内容是中文。 </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">语法上能够通过编译。SQLserver服务器里面是确定表内属性的是字符类型了,在server2005中也能够直接插入"张三"。在delphi中,把张三等中文换成数字或者字母能够成功插入。 </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">怀疑是ADOQuery组件的问题,所以换成ADOCommand组件,程序内容如下: </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">Commandtext:='insert into DBhomework values('+Edit1.Text+','+Edit2.Text+','+ComboBox1.Text+','+Edit3.Text+','+Edit4.Text+')'; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">Execute; </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">出现一样的错误信息。 </font><wbr><br><br><font style="LINE-HEIGHT: 1.3em" color="#000000">解决方法: </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">'+Edit2.Text+'和'+ComboBox1.Text+'改成'''+Edit2.Text+'''和'''+ComboBox1.Text+''' </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">其他的'也可以换成''' </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">附: </font><wbr><br><font style="LINE-HEIGHT: 1.3em" color="#000000">错误原因是:对于字符串字段属性没有加上引号,一直以为是SQLserver数据库建表中用的属性的数据类型问题,后来又想过会不会是Delphi数据类型转换问题,因为只要输入中文就会出现问题,曾经找到答案说加上双引号,试过了不对,不知道双引号在Delphi中是否等价于两个单引号??</font><wbr><img id="paperPicArea1" style="DISPLAY: none; POSITION: relative" src="http://edu.imgcache.qq.com/ac/b.gif"></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

你可能感兴趣的:(Delphi)