我们在写好软件,在NSIS打包以后,都想软件以后可以自动升级,这里就牵扯出来sql链接,后台数据库为sql的数据库前台程序时,很多时候无可避免地要涉及到对sql后台数据库的初始化设置操作,如何使用 NSIS 对用户输入的连接信息进行验证,然后利用这些连接信息进行数据库操作呢,这里给大家分享个sql连接验证教程。

一、NSIS代码部分

/*-----------------------------------------
SQLServer 连接测试脚本,这是最简化的脚本,基本上只做了连接测试,其他的操作,例如 数据库还原操作等等这里都没有实现。
-------------------------------------------*/
!include "MUI.nsh"
Name "SQLServer 连接操作"
OutFile "Setup.exe"
Page custom PageInitFunc PageLeaveFunc ""  # 自定义页面
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"  # 设置安装界面语言
ShowInstDetails show # 显示安装进度信息
ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS  # 预先打包文件,方便安装加速释放
Var SERVERNAME  # 服务器名 例如: server ; user5 ...... 通常是计算机名
Var LOGINNAME    # 登陆名 例如: sa ..... SQLServer 安全性属性那里的用户名
Var LOGINPASSWORD  # 登陆密码, 如果你用的是 sa 登陆,这里就要 sa 的密码
Var isql_DIR # isql.exe 的所在位置
Function .onInit
  !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io.ini"  # 初始化页面
FunctionEnd
Function PageInitFunc
  !insertmacro MUI_INSTALLOPTIONS_DISPLAY "io.ini"  # 显示页面
FunctionEnd
Function PageLeaveFunc
  !insertmacro MUI_INSTALLOPTIONS_READ $SERVERNAME "io.ini" "Field 2" "State"
  !insertmacro MUI_INSTALLOPTIONS_READ $LOGINNAME "io.ini" "Field 3" "State"
  !insertmacro MUI_INSTALLOPTIONS_READ $LOGINPASSWORD "io.ini" "Field 4" "State"
  ReadRegStr $isql_DIR HKLM "SOFTWARE\Microsoft\Microsoft SQL Server\80\Tools\ClientSetup" "SQLPath"
  nsExec::ExecToStack `"$isql_DIR\Binn\isql" -S$SERVERNAME -U$LOGINNAME -P$LOGINPASSWORD -Q"select 'ok'" -o$PLUGINSDIR\result.txt`
  # 这里只是简单的测试返回值 $0 为 0 则连接通过, 为其他值则连接出错,证明账号密码等参数输入错误, 这里只是很简单的检测,较为安全的操作是读取 result.txt 文件,如果里面第 3 行 显示为 ok 则连接正常且顺利运行了一个 SQL 语句。
  Pop $0
  StrCmp $0 0 pass
  MessageBox MB_OK "连接错误,请重新输入连接信息,否则无法进行后面的操作"
  Abort
pass:
  MessageBox MB_OK "输入连接信息正确,接下来执行其他操作"
FunctionEnd
Section "-SetupFunc" SEC1
  DetailPrint "这里执行你要做的数据库操作"
  DetailPrint "isql 可以完成所有数据库操作,请看SQLServer的相关帮助"
SectionEnd

二、来自 io.ini引用部分

Settings]
NumFields=7
[Field 1] &nbasp;
Type=label
Text=SQLServer 连接
Left=0
Right=-1
Top=0
Bottom=9
[Field 2]
Type=Text
Left=40
Right=163
Top=22
Bottom=35
[Field 3]
Type=Text
Left=39
Right=163
Top=43
Bottom=54
[Field 4]
Type=Password
Left=39
Right=163
Top=62
Bottom=75
[Field 5]
Type=Label
Text=密码:
Left=8
Right=36
Top=65
Bottom=75
[Field 6]
Type=Label
Text=账号:
Left=8
Right=38
Top=46
Bottom=56
[Field 7]
Type=Label
Text=服务器:
Left=6
Right=34
Top=27
Bottom=36
文章目录
正文到此结束