日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁編程開發(fā)Delphi → delphi中使用ADOQuery時(shí)的幾個(gè)問題解決方案

      delphi中使用ADOQuery時(shí)的幾個(gè)問題解決方案

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2013/3/14 15:51:12字體大小:A-A+

      作者:西西點(diǎn)擊:0次評(píng)論:2次標(biāo)簽: ADOQuery

      • 類型:系統(tǒng)其它大。440KB語言:英文 評(píng)分:7.5
      • 標(biāo)簽:
      立即下載

      問題1、文參數(shù)的支持問題
      今天在使用ClientDataSource查詢的時(shí)候,“divece_name”參數(shù)賦值為“%筆記本電腦%”,但是使用sql server Profiler跟蹤后發(fā)現(xiàn)查詢的語句變?yōu)椋?/p>

      查詢的數(shù)據(jù)提交到數(shù)據(jù)庫時(shí)不完整,當(dāng)我把N'@P1 varchar(8)', '%筆記本%'就可以正常執(zhí)行了

      我想可能是數(shù)據(jù)類型不正確,于是這么寫:

      cdsEquipment.Close;<br>cdsEquipment.Params.ParamByName('divece_name').DateType := ftWideString;
      cdsEquipment.Params.ParamByName('divece_name').Value := '%' + txtDevice.Text + '%';
      cdsEquipment.Open;

       但是提交到數(shù)據(jù)庫的數(shù)據(jù)依然不完整:

      最后在中間服務(wù)端的ADOQuery控件的BeforeOpen事件中加入如下代碼就可以了:

      adoqEquipment.Parameters.ParamByName('divece_name').Size := Length(adoqEquipment.Parameters.
      ParamByName('divece_name').Value);

       重新設(shè)置參數(shù)長(zhǎng)度,據(jù)說這是ADOQuery控件的BUG,對(duì)中文參數(shù)的支持問題

      問題2、ADOQuery錯(cuò)誤:ADOQuery1:commandtext does not return a result set
      程序內(nèi)容:
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('insert into DBhomework values('+Edit1.Text+','+Edit2.Text+','+ComboBox1.Text+','+Edit3.Text+','+Edit4.Text+')');
      ADOQuery1.Open;
      解決方法:
      ADOQuery1.Open; 這行改成 ADOQuery1.ExecSQL;
      Select 之類的 SQL 語句才用 ADOQuery1.Open;
      附:
      在select中用open方法,是正確的,但是在insert中代碼能夠執(zhí)行,只是顯示了上面的錯(cuò)誤信息:ADOQuery1:CommandText does not return a result set,后來才知道ExecSQL方法是執(zhí)行,不會(huì)要求SQL服務(wù)器給一個(gè)返回值,而對(duì)于select則能夠使用open方法,有返回值。

      問題3、ADOQuery錯(cuò)誤:在此上下問中不允許使用名稱"張三"。有效表達(dá)式包括常量、常量表達(dá)式和變量(在某些上下文中)。不允許使用列名。
      程序內(nèi)容:
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('insert into DBhomework(學(xué)號(hào),姓名,性別,手機(jī)號(hào)碼,班級(jí)) values('+Edit1.Text+','+Edit2.Text+','+ComboBox1.Text+','+Edit3.Text+','+Edit4.Text+')');
      ADOQuery1.ExecSQL;
      其中,“姓名”和“性別”的內(nèi)容是中文。
      語法上能夠通過編譯。SQLserver服務(wù)器里面是確定表內(nèi)屬性的是字符類型了,在server2005中也能夠直接插入"張三"。在delphi中,把張三等中文換成數(shù)字或者字母能夠成功插入。
      懷疑是ADOQuery組件的問題,所以換成ADOCommand組件,程序內(nèi)容如下:
      Commandtext:='insert into DBhomework values('+Edit1.Text+','+Edit2.Text+','+ComboBox1.Text+','+Edit3.Text+','+Edit4.Text+')';
      Execute;
      出現(xiàn)一樣的錯(cuò)誤信息。

      解決方法:
      '+Edit2.Text+'和'+ComboBox1.Text+'改成'''+Edit2.Text+'''和'''+ComboBox1.Text+'''
      其他的'也可以換成'''
      附:
      錯(cuò)誤原因是:對(duì)于字符串字段屬性沒有加上引號(hào),一直以為是SQLserver數(shù)據(jù)庫建表中用的屬性的數(shù)據(jù)類型問題,后來又想過會(huì)不會(huì)是Delphi數(shù)據(jù)類型轉(zhuǎn)換問題,因?yàn)橹灰斎胫形木蜁?huì)出現(xiàn)問題,曾經(jīng)找到答案說加上雙引號(hào),試過了不對(duì),不知道雙引號(hào)在Delphi中是否等價(jià)于兩個(gè)單引

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(2)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)
        推薦文章

        沒有數(shù)據(jù)