求救:如果用ado实现调用sql脚本 sos~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在VC 中使用WinExec(s,SW_HIDE)来执行sqlw.exeisqlw 实用工具(SQL 查询分析器)使您得以输入 Transact-SQL 语句、系统存储过程和脚本文件。通过设置快捷方式或创建批处理文件,可以启动预配置的 SQL 查询分析器。语法isqlw [-?] | [ [-S server_name[\instance_name]] [-d database] [-E] [-U user] [-P password] [{-i input_file} {-o output_file} [-F {U|A|O}]] [-f file_list] [-C configuration_file] [-D scripts_directory] [-T template_directory] ]参数-?显示用法信息。-S server_name[\instance_name]:指定要连接到的 Microsoft® SQL Server™ 2000 实例。指定用于连接到该服务器上的 SQL Server 2000 默认实例的 server_name。指定用于连接到该服务器上的 SQL Server 2000 命名实例的 server_name\instance_name。如果未指定服务器,isqlw 将连接到本地计算机上的 SQL Server 默认实例。从网络上的远程计算机执行 isqlw 时,此选项是必需的。-d database当启动 isqlw 时,发出一个 USE database 语句。默认值为用户的默认数据库。-E使用信任连接而不请求密码。-U user用户登录 ID。登录 ID 区分大小写。-P password是登录密码。默认设置为 NULL。-i input_file标识包含一批 SQL 语句或存储过程的文件。必须同时指定 -i 和 -o 选项。如果指定 -i 和 -o 选项,将执行输入文件中的查询,并将结果保存到输出文件中。在查询执行过程中不显示用户接口。当执行完成后,进程退出。-o output_file标识接收来自 isqlw 的输出的文件。必须同时指定 –i 和 –o 选项。如果指定 -i 和 -o 选项,将执行输入文件中的查询,并将结果保存到输出文件中。在查询执行过程中不显示用户接口。当执行完成后,进程退出。如果未使用 -F 指定文件格式,则输出文件使用与输入文件相同的类型。-F {U|A|O}是输入文件和输出文件的格式。值包括 Unicode、ANSI 和 OEM。如果未指定 -F,则使用自动模式(如果文件标为 Unicode 格式,则以 Unicode 格式打开;否则,以 ANSI 格式打开文件)。-f file_list将列出的文件装载到 SQL 查询分析器中。使用 -f 选项,可以装载一个或多个文件(文件名以单个空格分开)。如果指定了多个文件,则以相同的连接上下文将这些文件打开。文件名可以包含该文件所驻留的目录路径。可以使用通配符,如 C:\Test\*.sql 中的星号 (*)。-C configuration_file使用配置文件中指定的设置。其它在命令提示下显式指定的参数将重写相应配置文件中的设置。-D scripts_directory重写在注册表中或在用 –C 指定的配置文件中指定的默认存储脚本目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。-T template_directory重写在注册表中或在用 –C 指定的配置文件中指定的默认模板目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。注释有用户界面或没有用户界面时都可使用 isqlw 实用工具。若要在没有用户界面的情况下运行 isqlw,请指定有效登录信息(具有信任连接或有效登录 ID 及密码的 SQL Server 2000 实例)和输入及输出文件。isqlw 将执行输入文件的内容,并将结果保存到输出文件中。例:isqlw -d pubs -E -f "c:\Program Files\Microsoft SQL Server\MSSQL\Install\instpubs.sql" "c:\Program Files\Microsoft SQL Server\MSSQL\Install\instcat.sql" 你是直接要用一条SQL语句把一个SQL文件打开,然后再得到一个记录集吗? 我觉得应该首先在VC中用文本操作命令打开这个SQL文件(反正是纯文本的嘛),然后再把把整个SQL文件的内容赋值到一个String或者某个字符串中,然后用ADO执行这个字符串。 To zgdhj95:这样好像不行,你可以4一下,ado里的string只能实现单步的sql语言(如select * from table1,哪怕有个if语句也不行)! 可以这么解决,你在数据库上建立一个存储过程,(我以SQL Server示例)CREATE PROCEDURE exe_sqlstr @sqlstr varchar(200) ASEXEC (@sqlstr)这个存储过程exe_sqlstr 什么也不错,就是执行传进来的参数。然后你在ADO里面就可以这么写(用VB写的,具体到VC你自己解决 :) )Dim prmByRoyalty As ADODB.Parameter '定义一个ADO Parameter 对象Dim cmdsp As New ADODB.Command '定义一个ADO COMMAND对象Dim sqlstr as string'我用一个两句SELECT 组成的字符串来做实验,具体的原理跟打开一个SQL文件是一样的sqlstr = " SELECT * FROM BJSZ SELECT * FROM BJH" Set cmdsp.ActiveConnection = adocnn ''创建Parameter 对象,这个参数就是用来传入SQL字符串的Set prmByRoyalty = cmdsp.CreateParameter("@sqlstr", adVarChar, adParamInput, 200)With cmdsp .CommandType = adCmdStoredProc .CommandText = "exe_sqlstr" '这个exe_sqlstr刚刚建好的那个存储过程 .Parameters.Append prmByRoyalty '添加这个参数'将从SQL文件中读出的字符串赋值到这个参数,具体这个参数的长度可以在创建的时候修改'就是上面的CreateParameter语句中最后的那个200 prmByRoyalty.Value = sqlstrEnd Withcmdsp.Execute'执行这个COMMAND,然后就可以了,你试试看吧 第二第三个合成第一个显示器显示的内容 VC里面的VARIANT类型,定义好奇怪啊,自己嵌套自己,解释一下吧! 如何在一个单文档的视图里创建显示一个滑动条控件并改变颜色? 如何修改VC.NET中对话框的属性中的class name? 请问如何在用DirectX开发的游戏里弹出对话框? 定位光标 找不到bitset类???? 操作软盘的问题,帮忙! 线程优先级与信号量的处理 如何调用系统中的播放器播放文件 怎样在一个区域内显示众多缩小比例的图片,该区域能带滚动条? 什么函数将消息队列中的键盘消息全部清空?
isqlw
[-?] |
[
[-S server_name[\instance_name]]
[-d database]
[-E] [-U user] [-P password]
[{-i input_file} {-o output_file} [-F {U|A|O}]]
[-f file_list]
[-C configuration_file]
[-D scripts_directory]
[-T template_directory]
]参数-?显示用法信息。-S server_name[\instance_name]:指定要连接到的 Microsoft® SQL Server™ 2000 实例。指定用于连接到该服务器上的 SQL Server 2000 默认实例的 server_name。指定用于连接到该服务器上的 SQL Server 2000 命名实例的 server_name\instance_name。如果未指定服务器,isqlw 将连接到本地计算机上的 SQL Server 默认实例。从网络上的远程计算机执行 isqlw 时,此选项是必需的。-d database当启动 isqlw 时,发出一个 USE database 语句。默认值为用户的默认数据库。-E使用信任连接而不请求密码。-U user用户登录 ID。登录 ID 区分大小写。-P password是登录密码。默认设置为 NULL。-i input_file标识包含一批 SQL 语句或存储过程的文件。必须同时指定 -i 和 -o 选项。如果指定 -i 和 -o 选项,将执行输入文件中的查询,并将结果保存到输出文件中。在查询执行过程中不显示用户接口。当执行完成后,进程退出。-o output_file标识接收来自 isqlw 的输出的文件。必须同时指定 –i 和 –o 选项。如果指定 -i 和 -o 选项,将执行输入文件中的查询,并将结果保存到输出文件中。在查询执行过程中不显示用户接口。当执行完成后,进程退出。如果未使用 -F 指定文件格式,则输出文件使用与输入文件相同的类型。-F {U|A|O}是输入文件和输出文件的格式。值包括 Unicode、ANSI 和 OEM。如果未指定 -F,则使用自动模式(如果文件标为 Unicode 格式,则以 Unicode 格式打开;否则,以 ANSI 格式打开文件)。-f file_list将列出的文件装载到 SQL 查询分析器中。使用 -f 选项,可以装载一个或多个文件(文件名以单个空格分开)。如果指定了多个文件,则以相同的连接上下文将这些文件打开。文件名可以包含该文件所驻留的目录路径。可以使用通配符,如 C:\Test\*.sql 中的星号 (*)。-C configuration_file使用配置文件中指定的设置。其它在命令提示下显式指定的参数将重写相应配置文件中的设置。-D scripts_directory重写在注册表中或在用 –C 指定的配置文件中指定的默认存储脚本目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。-T template_directory重写在注册表中或在用 –C 指定的配置文件中指定的默认模板目录。该值不保留在注册表或配置文件中。若要在 SQL 查询分析器中查看该选项的当前值,请单击"工具"菜单,然后单击"选项"命令。
注释
有用户界面或没有用户界面时都可使用 isqlw 实用工具。若要在没有用户界面的情况下运行 isqlw,请指定有效登录信息(具有信任连接或有效登录 ID 及密码的 SQL Server 2000 实例)和输入及输出文件。isqlw 将执行输入文件的内容,并将结果保存到输出文件中。
例:
isqlw -d pubs -E -f "c:\Program Files\Microsoft SQL Server\MSSQL\Install\instpubs.sql" "c:\Program Files\Microsoft SQL Server\MSSQL\Install\instcat.sql"
CREATE PROCEDURE exe_sqlstr @sqlstr varchar(200)
AS
EXEC (@sqlstr)
这个存储过程exe_sqlstr 什么也不错,就是执行传进来的参数。然后你在ADO里面就可以这么写(用VB写的,具体到VC你自己解决 :) )
Dim prmByRoyalty As ADODB.Parameter '定义一个ADO Parameter 对象
Dim cmdsp As New ADODB.Command '定义一个ADO COMMAND对象
Dim sqlstr as string'我用一个两句SELECT 组成的字符串来做实验,具体的原理跟打开一个SQL文件是一样的
sqlstr = " SELECT * FROM BJSZ SELECT * FROM BJH" Set cmdsp.ActiveConnection = adocnn '
'创建Parameter 对象,这个参数就是用来传入SQL字符串的
Set prmByRoyalty = cmdsp.CreateParameter("@sqlstr", adVarChar, adParamInput, 200)With cmdsp
.CommandType = adCmdStoredProc
.CommandText = "exe_sqlstr" '这个exe_sqlstr刚刚建好的那个存储过程
.Parameters.Append prmByRoyalty '添加这个参数
'将从SQL文件中读出的字符串赋值到这个参数,具体这个参数的长度可以在创建的时候修改
'就是上面的CreateParameter语句中最后的那个200
prmByRoyalty.Value = sqlstr
End With
cmdsp.Execute
'执行这个COMMAND,然后就可以了,你试试看吧