我们在写好软件,在NSIS打包以后,都想软件以后可以自动升级,这里就牵扯出来sql链接,后台数据库为sql的数据库前台程序时,很多时候无可避免地要涉及到对sql后台数据库的初始化设置操作,如何使用 NSIS 对用户输入的连接信息进行验证,然后利用这些连接信息进行数据库操作呢,这里给大家分享个sql连接验证教程。
流年打包效果预览,请自行跳转下载查看:暴风影音——百度音乐

nsis

一、NSIS代码部分

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

二、来自 io.ini引用部分

  1. [Settings]
  2. NumFields=7
  3. [Field 1] &nbasp;
  4. Type=label
  5. Text=SQLServer 连接
  6. Left=0
  7. Right=-1
  8. Top=0
  9. Bottom=9
  10. [Field 2]
  11. Type=Text
  12. Left=40
  13. Right=163
  14. Top=22
  15. Bottom=35
  16. [Field 3]
  17. Type=Text
  18. Left=39
  19. Right=163
  20. Top=43
  21. Bottom=54
  22. [Field 4]
  23. Type=Password
  24. Left=39
  25. Right=163
  26. Top=62
  27. Bottom=75
  28. [Field 5]
  29. Type=Label
  30. Text=密码:
  31. Left=8
  32. Right=36
  33. Top=65
  34. Bottom=75
  35. [Field 6]
  36. Type=Label
  37. Text=账号:
  38. Left=8
  39. Right=38
  40. Top=46
  41. Bottom=56
  42. [Field 7]
  43. Type=Label
  44. Text=服务器:
  45. Left=6
  46. Right=34
  47. Top=27
  48. Bottom=36
正文到此结束

留言

0条评论

LEAVE A REPLY

  • face face face face face face face face face face face face face face face face face face face face face face face face face