找回密码
 加入
搜索
查看: 2584|回复: 2

[系统综合] 执行SQL命令调用au3变量问题(附源程序)

[复制链接]
发表于 2011-7-16 11:50:57 | 显示全部楼层 |阅读模式
#include <Process.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <mysql.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 366, 155, 486, 269)
$Label1 = GUICtrlCreateLabel("号码:", 64, 40, 52, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("", 112, 40, 193, 21)
$Button1 = GUICtrlCreateButton("查 询", 112, 104, 43, 25)
$Button2 = GUICtrlCreateButton("退 出", 224, 104, 51, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
EndSwitch
          Select
          Case $nmsg = $Button1
               If FileExists("C:\cx.txt") Then
                          FileDelete("C:\cx.txt")
                       endif   
                          $passlen=StringLen(GUICtrlRead($Input1))
                           if $passlen<12  then
                              MsgBox(16, "错误", "输入的号码位数不正确,请重新输入!")
                              ContinueLoop
                                endif
                           $conn = ObjCreate("ADODB.Connection")
               $RS = ObjCreate("ADODB.Recordset")
               $conn.Open ("driver={SQL Server};server=127.0.0.1;uid=XXX;pwd=XXX;database=XXX")
               $RS.ActiveConnection = $conn
               $conn.Execute("EXEC master..xp_cmdshell 'bcp ""select kh from [xxx].[xxx].[xxx] where kh=GUICtrlRead($Input1)
"" queryout c:\cx.txt -c -Slocalhost -Uxxx -Pxxx'");这句错误,不知道怎么回事
               $file = FileOpen("c:\cx.txt", 0)
               If $file = -1 Then
                  MsgBox(0, "错误", "不能打开文件!")
                              Exit
               endif
               $line = FileReadLine($file)
               MsgBox(4096, "结果",GUICtrlRead($Input1))
                           If $line<>GUICtrlRead($Input1) Then
                      MsgBox(0, "警告:", "输入的号码不存在,请重新输入。。。")
               else
                  MsgBox(4096, "结果", "查询成功!")
               endif
           Case $nmsg = $Button2
                 exit
        
   EndSelect
    WEnd

为什么在执行“$conn.Execute("EXEC master..xp_cmdshell 'bcp ""select kh from [xxx].[xxx].[xxx] where kh=GUICtrlRead($Input1)
"" queryout c:\cx.txt -c -Slocalhost -Uxxx -Pxxx'")
”这句的时候不能生成"c:\cx.txt"呢?还有其它的办法直接可以得用au3命令在SQL数据库里面查询吗?不用生成结果,比如执行SQL命令后,直接检测返回参数就可以了。
 楼主| 发表于 2011-7-16 12:44:35 | 显示全部楼层
期待高手出现...
发表于 2011-7-17 14:53:33 | 显示全部楼层
本帖最后由 tubaba 于 2011-7-17 14:58 编辑

这句根本就通不过编译吧,看看你影号用的对不对,把你在sql查询分析器里能通过运行的代码放上来看看

$conn.Execute("EXEC master..xp_cmdshell 'bcp ""select kh from [xxx].[xxx].[xxx] where kh=GUICtrlRead($Input1)"" queryout c:\cx.txt -c -Slocalhost -Uxxx -Pxxx'")



where kh=GUICtrlRead($Input1) 光是这个,就不对,GUICtrlRead($Input1)是个变量,
如果 kh是int类型,那么写成 "where kh=" & GUICtrlRead($Input1)
如果是字符型那么写成 "where kh='" & GUICtrlRead($Input1) & "'"
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 13:48 , Processed in 0.070289 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表