• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Tạo DSN cho SQL Server trong Data Source (ODBC)

Bộ sưu tập mã nguồn các ứng dụng tiện ích
User avatar
vietteiv
Quản trị
Quản trị
Posts: 1323
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 71 times
Contact:

Tạo DSN cho SQL Server trong Data Source (ODBC)

Postby vietteiv » Sat 01/10/2011 2:58 pm

Tên chương trình: Tạo DSN cho SQL Server trong Data Source (ODBC)
Ngôn ngữ lập trình: VB6
Tác giả: vietteiv
Chức năng: tạo DSN kết nối đến SQL Server


muốn tạo DSN kết nối SQL Server tự động đến máy chủ, các bạn phải tạo thủ công trong Data source (ODBC)
ODBC.png
ODBC.png (39.72 KiB) Viewed 2503 times

các bạn có thể sử dụng code để tạo tự động như sau:

khai báo các hàm sử dụng
  1. Option Explicit
  2.  
  3. Private Const REG_DWORD = 4&
  4. Private Const REG_SZ = 1
  5. Private Const HKEY_CURRENT_USER = &H80000001
  6.  
  7. Private Declare Function RegCreateKey Lib "advapi32.dll" Alias _
  8.        "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
  9.        phkResult As Long) As Long
  10.  
  11. Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
  12.        "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
  13.        ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal _
  14.        cbData As Long) As Long
  15.  
  16. Private Declare Function RegCloseKey Lib "advapi32.dll" _
  17.        (ByVal hKey As Long) As Long

tạo 1 button trên form để thực hiện (hoặc viết trong function để chạy tự động cũng được)
[vb]Private Sub cmdRun_Click()
Dim DataSourceName As String
Dim DatabaseName As String
Dim Description As String
Dim DriverPath As String
Dim DriverName As String
Dim User As String
Dim PWD As String
Dim LastUser As String
Dim Server As String

Dim lResult As Long
Dim hKeyHandle As Long
Dim hKeyHandSub As Long

'Specify the DSN parameters.
DataSourceName = txtDatabase.Text
DatabaseName = txtDatabase.Text
Description = "Tao DSN tu dong"
DriverPath = "C:\windows\System\odbcjt32.dll"
PWD = "123"
User = "sa"
LastUser = "sa"
Server = txtServerName.Text
DriverName = "SQL Server"

'Create the new DSN key.
lResult = RegCreateKey(HKEY_CURRENT_USER, "SOFTWARE\ODBC\ODBC.INI\" & DataSourceName, hKeyHandle)

'Set the values of the new DSN key.
lResult = RegSetValueEx(hKeyHandle, "Database", 0&, REG_SZ, ByVal DatabaseName, Len(DatabaseName))
lResult = RegSetValueEx(hKeyHandle, "Description", 0&, REG_SZ, ByVal Description, Len(Description))
lResult = RegSetValueEx(hKeyHandle, "Driver", 0&, REG_SZ, ByVal DriverPath, Len(DriverPath))
lResult = RegSetValueEx(hKeyHandle, "PWD", 0&, REG_SZ, ByVal PWD, Len(PWD))
lResult = RegSetValueEx(hKeyHandle, "SafeTransactions", 0&, REG_DWORD, 0, 4)
lResult = RegSetValueEx(hKeyHandle, "UID", 0&, REG_SZ, ByVal User, Len(User))
lResult = RegSetValueEx(hKeyHandle, "LastUser", 0&, REG_SZ, ByVal LastUser, Len(LastUser))
lResult = RegSetValueEx(hKeyHandle, "Server", 0&, REG_SZ, ByVal Server, Len(Server))

'Open a new key as follows
lResult = RegCreateKey(HKEY_CURRENT_USER, "SOFTWARE\ODBC\ODBC.INI\" & DataSourceName & "\Engines\Jet", hKeyHandSub)

lResult = RegSetValueEx(hKeyHandSub, "ImplicitCommitSync", 0&, REG_SZ, ByVal "", 0)
lResult = RegSetValueEx(hKeyHandSub, "MaxBufferSize", 0&, REG_DWORD, 2048, 4)
lResult = RegSetValueEx(hKeyHandSub, "PageTimeout", 0&, REG_DWORD, 5, 4)
lResult = RegSetValueEx(hKeyHandSub, "Threads", 0&, REG_DWORD, 3, 4)
lResult = RegSetValueEx(hKeyHandSub, "UserCommitSync", 0&, REG_SZ, ByVal "Yes", 3)

'Close the new Sub key.
lResult = RegCloseKey(hKeyHandSub)

'Close the new DSN key.
lResult = RegCloseKey(hKeyHandle)

'Open ODBC Data Sources key to list the new DSN in the ODBC Manager.
'Specify the new value.
'Close the key.

lResult = RegCreateKey(HKEY_CURRENT_USER, "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", hKeyHandle)
lResult = RegSetValueEx(hKeyHandle, DataSourceName, 0&, REG_SZ, ByVal DriverName, Len(DriverName))
lResult = RegCloseKey(hKeyHandle)

MsgBox "Da tao DSN: " & txtDatabase.Text & " thanh cong!", vbInformation
End Sub[/vb]
hình demo
01-10-2011 2-57-08 PM.png
demo
01-10-2011 2-57-08 PM.png (13.63 KiB) Viewed 2504 times

p/s: chưa tạo function kiểm tra DSN đã có hay chưa, nếu chưa thì tạo mới. bạn nào cần thì nghiên cứu phát triển thêm :)
Attachments
Create DSN.rar
source code
(2.11 KiB) Downloaded 681 times



Return to “[VB] Mã nguồn chương trình tiện ích”

Who is online

Users browsing this forum: No registered users and 2 guests