添加,编辑&使用MySQL ODBC&删除DSN VB.NET [英] Add, Edit & Delete DSN using MySQL ODBC & VB.NET
本文介绍了添加,编辑&使用MySQL ODBC&删除DSN VB.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好我想知道Add,Edit& amp;的最佳代码。使用MySQL ODBC&删除DSN VB.NET。
到目前为止,这是我的代码,问题是我需要以管理员身份运行系统。
Hi I would like to know the best code for Add, Edit & Delete DSN using MySQL ODBC & VB.NET.
So far this is my code, the problem is that i need to run the system as admin.
Imports Microsoft.Win32
Public Class frmmysqlDSN
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label4 As System.Windows.Forms.Label
Friend WithEvents Label5 As System.Windows.Forms.Label
Friend WithEvents Label6 As System.Windows.Forms.Label
Friend WithEvents Label8 As System.Windows.Forms.Label
Friend WithEvents cmdDsn As System.Windows.Forms.Button
Friend WithEvents cmdclose As System.Windows.Forms.Button
Friend WithEvents txtdsnname As System.Windows.Forms.TextBox
Friend WithEvents txtdescription As System.Windows.Forms.TextBox
Friend WithEvents txtserver As System.Windows.Forms.TextBox
Friend WithEvents txtdatabase As System.Windows.Forms.TextBox
Friend WithEvents txtusername As System.Windows.Forms.TextBox
Friend WithEvents txtpassword As System.Windows.Forms.TextBox
Friend WithEvents txtport As System.Windows.Forms.TextBox
Friend WithEvents GetDSN As System.Windows.Forms.Button
Friend WithEvents Label7 As System.Windows.Forms.Label
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label5 = New System.Windows.Forms.Label()
Me.Label6 = New System.Windows.Forms.Label()
Me.Label8 = New System.Windows.Forms.Label()
Me.txtdsnname = New System.Windows.Forms.TextBox()
Me.txtdescription = New System.Windows.Forms.TextBox()
Me.txtserver = New System.Windows.Forms.TextBox()
Me.txtdatabase = New System.Windows.Forms.TextBox()
Me.txtusername = New System.Windows.Forms.TextBox()
Me.txtpassword = New System.Windows.Forms.TextBox()
Me.txtport = New System.Windows.Forms.TextBox()
Me.cmdDsn = New System.Windows.Forms.Button()
Me.cmdclose = New System.Windows.Forms.Button()
Me.GetDSN = New System.Windows.Forms.Button()
Me.Label7 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label1.Location = New System.Drawing.Point(56, 40)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(80, 14)
Me.Label1.TabIndex = 0
Me.Label1.Text = "DSN Name :"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label2.Location = New System.Drawing.Point(56, 64)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(85, 14)
Me.Label2.TabIndex = 1
Me.Label2.Text = "Description :"
Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label3.Location = New System.Drawing.Point(24, 112)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(113, 14)
Me.Label3.TabIndex = 3
Me.Label3.Text = "Database Name :"
Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label4.Location = New System.Drawing.Point(40, 88)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(95, 14)
Me.Label4.TabIndex = 2
Me.Label4.Text = "Server Name :"
Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label5.Location = New System.Drawing.Point(64, 160)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(74, 14)
Me.Label5.TabIndex = 5
Me.Label5.Text = "Password :"
Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label6.Location = New System.Drawing.Point(56, 136)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(82, 14)
Me.Label6.TabIndex = 4
Me.Label6.Text = "User Name :"
Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.ForeColor = System.Drawing.Color.RoyalBlue
Me.Label8.Location = New System.Drawing.Point(96, 184)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(39, 14)
Me.Label8.TabIndex = 6
Me.Label8.Text = "Port :"
Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'txtdsnname
'
Me.txtdsnname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtdsnname.Location = New System.Drawing.Point(152, 40)
Me.txtdsnname.Name = "txtdsnname"
Me.txtdsnname.Size = New System.Drawing.Size(224, 21)
Me.txtdsnname.TabIndex = 7
Me.txtdsnname.Text = ""
'
'txtdescription
'
Me.txtdescription.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtdescription.Location = New System.Drawing.Point(152, 64)
Me.txtdescription.Name = "txtdescription"
Me.txtdescription.Size = New System.Drawing.Size(224, 21)
Me.txtdescription.TabIndex = 8
Me.txtdescription.Text = "MySQL ODBC 3.51 Driver DSN"
'
'txtserver
'
Me.txtserver.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtserver.Location = New System.Drawing.Point(152, 88)
Me.txtserver.Name = "txtserver"
Me.txtserver.Size = New System.Drawing.Size(224, 21)
Me.txtserver.TabIndex = 9
Me.txtserver.Text = "localhost"
'
'txtdatabase
'
Me.txtdatabase.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtdatabase.Location = New System.Drawing.Point(152, 112)
Me.txtdatabase.Name = "txtdatabase"
Me.txtdatabase.Size = New System.Drawing.Size(224, 21)
Me.txtdatabase.TabIndex = 10
Me.txtdatabase.Text = ""
'
'txtusername
'
Me.txtusername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtusername.Location = New System.Drawing.Point(152, 136)
Me.txtusername.Name = "txtusername"
Me.txtusername.Size = New System.Drawing.Size(224, 21)
Me.txtusername.TabIndex = 11
Me.txtusername.Text = "root"
'
'txtpassword
'
Me.txtpassword.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtpassword.Location = New System.Drawing.Point(152, 160)
Me.txtpassword.Name = "txtpassword"
Me.txtpassword.Size = New System.Drawing.Size(224, 21)
Me.txtpassword.TabIndex = 12
Me.txtpassword.Text = ""
'
'txtport
'
Me.txtport.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtport.Location = New System.Drawing.Point(152, 184)
Me.txtport.Name = "txtport"
Me.txtport.Size = New System.Drawing.Size(224, 21)
Me.txtport.TabIndex = 13
Me.txtport.Text = "3306"
'
'cmdDsn
'
Me.cmdDsn.BackColor = System.Drawing.Color.DodgerBlue
Me.cmdDsn.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.cmdDsn.Location = New System.Drawing.Point(152, 208)
Me.cmdDsn.Name = "cmdDsn"
Me.cmdDsn.Size = New System.Drawing.Size(112, 72)
Me.cmdDsn.TabIndex = 14
Me.cmdDsn.Text = "&Create DSN"
'
'cmdclose
'
Me.cmdclose.BackColor = System.Drawing.Color.DodgerBlue
Me.cmdclose.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.cmdclose.Location = New System.Drawing.Point(152, 280)
Me.cmdclose.Name = "cmdclose"
Me.cmdclose.Size = New System.Drawing.Size(224, 48)
Me.cmdclose.TabIndex = 16
Me.cmdclose.Text = "E&xit"
'
'GetDSN
'
Me.GetDSN.BackColor = System.Drawing.Color.DodgerBlue
Me.GetDSN.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.GetDSN.Location = New System.Drawing.Point(264, 208)
Me.GetDSN.Name = "GetDSN"
Me.GetDSN.Size = New System.Drawing.Size(112, 72)
Me.GetDSN.TabIndex = 15
Me.GetDSN.Text = "&Get DSN"
'
'Label7
'
Me.Label7.BackColor = System.Drawing.Color.DodgerBlue
Me.Label7.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(480, 24)
Me.Label7.TabIndex = 18
Me.Label7.Text = "Create Mysql DSN - By Vipul Patel (vipul_p44@yahoo.com)"
Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'frmmysqlDSN
'
Me.AutoScaleBaseSize = New System.Drawing.Size(7, 14)
Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(480, 333)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Label7, Me.GetDSN, Me.cmdclose, Me.cmdDsn, Me.txtport, Me.txtpassword, Me.txtusername, Me.txtdatabase, Me.txtserver, Me.txtdescription, Me.txtdsnname, Me.Label8, Me.Label5, Me.Label6, Me.Label3, Me.Label4, Me.Label2, Me.Label1})
Me.Font = New System.Drawing.Font("Verdana", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.KeyPreview = True
Me.Name = "frmmysqlDSN"
Me.Text = "Create Mysql DSN - By Vipul Patel (vipul_p44@yahoo.com)"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub cmdDsn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDsn.Click
Dim strdriverodbc As New String(Space(255))
If txtdsnname.Text = "" Then
MsgBox("Enter System DSN Name.", MsgBoxStyle.Information, "Create Mysql DSN")
txtdsnname.Focus()
Exit Sub
End If
If txtdescription.Text = "" Then
MsgBox("Enter Description.", MsgBoxStyle.Information, "Create Mysql DSN")
txtdescription.Focus()
Exit Sub
End If
If txtserver.Text = "" Then
MsgBox("Enter Server Name.", MsgBoxStyle.Information, "Create Mysql DSN")
txtserver.Focus()
Exit Sub
End If
If txtdatabase.Text = "" Then
MsgBox("Enter Database Name.", MsgBoxStyle.Information, "Create Mysql DSN")
txtdatabase.Focus()
Exit Sub
End If
If txtusername.Text = "" Then
MsgBox("Enter Username Name.", MsgBoxStyle.Information, "Create Mysql DSN")
txtusername.Focus()
Exit Sub
End If
'check that mysql ODBC drive is installed or not
If checkMySQLDriver(strdriverodbc) = False Then
MsgBox("MySQL ODBC 3.51 Driver Is Not Installed." + vbCrLf + " Please Install The MySQl ODBC 3.51 Driver First.", MsgBoxStyle.Information, "Create Mysql DSN")
Exit Sub
End If
'check that the dsnname is already exist ?
If MySQLDSNWanted(Trim(txtdsnname.Text)) = True Then
MsgBox("DSN Name Already Exists." + vbCrLf + " Please Enter Another Name", MsgBoxStyle.Information, "Create Mysql DSN")
txtdsnname.Focus()
Exit Sub
Else
MakeMySQLDSN(Trim(txtdatabase.Text), Trim(txtdsnname.Text), Trim(txtdescription.Text), strdriverodbc, Trim(txtusername.Text), Trim(txtpassword.Text), Trim(txtserver.Text), Trim(txtport.Text), 3, "")
End If
strdriverodbc = "C:\WINDOWS\System32\myodbc3.dll"
End Sub
Private Function MakeMySQLDSN(ByVal DB_Name As String, _
ByVal DSN As String, _
ByVal Description As String, _
ByVal Driver_Name As String, _
ByVal userid As String, _
ByVal password As String, _
ByVal Server_Name As String, _
ByVal port As String, _
ByVal stroption As String, _
ByVal stmt As String _
) As Boolean
Dim lResult As Long
Dim hKeyHandle As Long
Dim msg1 As String
Dim regHandle As RegistryKey ' Stores the Handle to Registry in which values need to be set
Dim reg As RegistryKey = Registry.LocalMachine
Dim conRegKey1 As String = "SOFTWARE\ODBC\ODBC.INI\" & DSN
Dim conRegKey2 As String = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
Try
regHandle = reg.CreateSubKey(conRegKey1)
regHandle.SetValue("Database", DB_Name)
regHandle.SetValue("Description", Description)
regHandle.SetValue("Driver", Driver_Name)
regHandle.SetValue("Option", stroption)
regHandle.SetValue("Password", password)
regHandle.SetValue("Port", port)
regHandle.SetValue("Server", Server_Name)
regHandle.SetValue("Stmt", stmt)
regHandle.SetValue("User", userid)
regHandle.Close()
reg.Close()
regHandle = reg.CreateSubKey(conRegKey2)
regHandle.SetValue(DSN, "MySQL ODBC 3.51 Driver")
regHandle.Close()
reg.Close()
MsgBox("Successfully created the System DSN." & vbCrLf & "You can view the created DSN by clicking on Get DSN button.", MsgBoxStyle.Information, "Create System DSN")
Catch err As Exception
MsgBox(err.Message)
End Try
End Function
Private Sub GetDSN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetDSN.Click
Call Shell("rundll32.exe shell32.dll,Control_RunDLL ODBCCP32.cpl @2, 5")
End Sub
Private Sub frmmysqlDSN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Function checkMySQLDriver(ByRef DriverODBC As String) As Boolean
Dim regHandle As RegistryKey ' Stores the Handle to Registry in which values need to be set
Dim reg As RegistryKey = Registry.LocalMachine
Dim conRegKey1 As String = "SOFTWARE\ODBC\ODBCINST.INI\MySQL ODBC 3.51 Driver"
Try
regHandle = reg.OpenSubKey(conRegKey1)
If regHandle.ValueCount > 0 Then
DriverODBC = regHandle.GetValue("Driver")
checkMySQLDriver = True
Else
checkMySQLDriver = False
End If
Catch err As Exception
MsgBox(err.Message)
End Try
End Function
Private Function MySQLDSNWanted(ByVal strdsnName As String) As Boolean
Dim reghandle As RegistryKey
Dim reg As RegistryKey = Registry.LocalMachine
Dim conRegKey1 As String = "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\"
Dim tmpdsnvalue As String
Try
reghandle = reg.OpenSubKey(conRegKey1)
If reghandle.ValueCount > 0 Then
tmpdsnvalue = reghandle.GetValue(strdsnName)
If tmpdsnvalue = "" Then
MySQLDSNWanted = False
Else
MySQLDSNWanted = True
End If
Else
MySQLDSNWanted = False
End If
Catch err As Exception
MsgBox(err.Message)
End Try
End Function
Private Sub cmdclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdclose.Click
End
End Sub
Private Sub frmmysqlDSN_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
If e.Button = MouseButtons.Right Then
MsgBox("Create Mysql DSN - By Vipul Patel (vipul_p44@yahoo.com)", MsgBoxStyle.Information, "Create Mysql DSN - By Vipul Patel (vipul_p44@yahoo.com)")
End If
End Sub
End Class
Any idea will help, thanks
Any idea will help, thanks
推荐答案
You’re not explaining the problem and how you e xpect this stuff to work at all.
You need admin priv’s because you’re writing to HKEY_LOCAL_MACHINE. Normal users cannot do that and there is no way around it.
You're not explaining the problem and how you expect this stuff to work at all.
You need admin priv's because you're writing to HKEY_LOCAL_MACHINE. Normal users cannot do that and there is no way around it.
Dear Sir :
Thanks for your code.
It is true you need permissions to write in the LOCAL_MACHINE , but you can save the DSN in the CURRENT_USER (Registry.CurrentUser)
Ichecked the drive using the local machine registry key and create the dns in the CurrentUser
It works fine for me.
I beg your pardon for my English.
Dear Sir :
Thanks for your code.
It is true you need permissions to write in the LOCAL_MACHINE , but you can save the DSN in the CURRENT_USER (Registry.CurrentUser)
Ichecked the drive using the local machine registry key and create the dns in the CurrentUser
It works fine for me.
I beg your pardon for my English.
这篇关于添加,编辑&使用MySQL ODBC&删除DSN VB.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文