VB.NET 与*.udl文件数据库连接调用
2007-02-07 14:44
411 查看
以前用VB6时连接数据库时,连接字符串调用*.udl文件,觉得很方便.但在VB.NET里调用*.udl文件时,有很大不同,VB6简单的写上:file name=c:/*.dul就行了,但VB.net是通过读取文件的方式来处理的,下面是全部代码。与大家共享:在您用时只要调用这个类:
Dim MyconnData As New ConnData
public Myconn As New SqlConnection(MyconnData.GetSQLConnectionString)
Imports System
Imports System.IO
Public Class ConnDataClass ConnData
Private m_strFileName As String
Private m_strConnectionText As String
Private m_strPesistSecurity As String
Private m_strIntegradedSecurity As String
Private m_strReconstructed As String
Private m_strDefaultFilename As String
Private m_strDatasource As String
Private m_strPassword As String
Private m_strUserID As String
Private m_strCatalog As String 'Database
Public Event CloseApplication()
Public Sub New()Sub New()
m_strDefaultFilename = "DataLink.udl"
ReadFromFile()
SplitConnectionString()
End Sub
Public Function GetSQLConnectionString()Function GetSQLConnectionString() As String
ReconstructSQLConnectionString()
Return m_strReconstructed
End Function
Private Sub ReconstructSQLConnectionString()Sub ReconstructSQLConnectionString()
m_strReconstructed = m_strPesistSecurity & ";"
If Not IsNothing(m_strIntegradedSecurity) Then
m_strReconstructed &= m_strIntegradedSecurity & ";"
Else
m_strReconstructed &= m_strPassword & ";"
If Not m_strUserID.Length = 0 Then
m_strReconstructed &= m_strUserID & ";"
End If
End If
m_strReconstructed &= m_strCatalog & ";"
m_strReconstructed &= m_strDatasource & ";"
m_strCatalog = m_strCatalog.Substring(16)
m_strDatasource = m_strDatasource.Substring(12)
If Not IsNothing(m_strPassword) Then
m_strPassword = m_strPassword.Substring(9)
m_strUserID = m_strUserID.Substring(8)
End If
End Sub
格式化从*.udl文件中,读取的字符串#Region "格式化从*.udl文件中,读取的字符串"
Private Sub SplitConnectionString()Sub SplitConnectionString()
Dim strArray As String() = Nothing
Dim strString As String
Dim strProvider As String
Dim strDRIVER As String
Dim strSERVER As String
Dim strUID As String
Dim strDATABASE As String
strArray = m_strConnectionText.Split(";")
If strArray(0).IndexOf("[oledb]") = -1 Then
Dim nAnswer As DialogResult
nAnswer = MessageBox.Show("This file cannot be read" & vbCr & _
"Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)
If nAnswer = DialogResult.Yes Then
ReadFromFile()
SplitConnectionString()
Exit Sub
Else
Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"
Err.Raise(vbObjectError + 999, , strDescription)
RaiseEvent CloseApplication()
End If
End If
For Each strString In strArray
If strString.IndexOf("Provider") > -1 Then
strProvider = strString.Substring(strString.IndexOf("Provider"))
End If
If strString.IndexOf("Password") > -1 Then
m_strPassword = strString
End If
If strString.IndexOf("Data") > -1 Then
m_strDatasource = strString
End If
If strString.IndexOf("User") > -1 Then
m_strUserID = strString
End If
If strString.IndexOf("Initial") > -1 Then
m_strCatalog = strString
End If
If strString.IndexOf("Integrated") > -1 Then
m_strIntegradedSecurity = strString
End If
If strString.IndexOf("Persist") > -1 Then
m_strPesistSecurity = strString
End If
If strString.IndexOf("DRIVER") > -1 Then
strDRIVER = strString.Substring(strString.IndexOf("DRIVER"))
End If
If strString.IndexOf("SERVER") > -1 Then
strSERVER = strString
End If
If strString.IndexOf("UID") > -1 Then
strUID = strString
End If
If strString.IndexOf("DATABASE") > -1 Then
strDATABASE = strString
strDATABASE = strDATABASE.Remove(strDATABASE.Length - 3, 3)
End If
Next
'Check if the connection string connects to SQLServer or Oracle Server.
If strProvider.IndexOf("MSDASQL") > -1 Then
If strDRIVER.IndexOf("SQL Server") > -1 Then
m_strDatasource = "Data Source" & strSERVER.Substring(6)
If strUID.Length > 0 Then
m_strUserID = "User ID" & strUID.Substring(3)
End If
m_strCatalog = "Initial Catalog " & strDATABASE.Substring(8)
Else
'not sqlserver database
Dim nAnswer As DialogResult
nAnswer = MessageBox.Show("This file does not connect to SQL Server Database" & vbCr & _
"Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)
If nAnswer = DialogResult.Yes Then
ReadFromFile()
SplitConnectionString()
Exit Sub
Else
Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"
Err.Raise(vbObjectError + 999, , strDescription)
End If
End If
ElseIf strProvider.IndexOf("SQLOLEDB") > -1 Then
m_strDatasource = m_strDatasource.Remove(m_strDatasource.Length - 2, 2)
ElseIf strProvider.IndexOf("OraOLEDB") > -1 Then 'Oracle provider for OLEDB
ElseIf strProvider.IndexOf("MSDAORA") > -1 Then 'Microsoft Provider for Oracle
Else
'not Oracle or sqlserver database Connection
Dim nAnswer As DialogResult
nAnswer = MessageBox.Show("This file does not connect to Oracle Server or SQL Database" & vbCr & _
"Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)
If nAnswer = DialogResult.Yes Then
ReadFromFile()
SplitConnectionString()
Exit Sub
Else
Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"
Err.Raise(vbObjectError + 999, , strDescription)
End If
End If
End Sub
#End Region
读取*.UDL文件内容,如是*.UDL文件不存在,则创建#Region "读取*.UDL文件内容,如是*.UDL文件不存在,则创建"
Private Sub ReadFromFile()Sub ReadFromFile()
Dim myStreamReader As StreamReader
Dim strFileName As String
Try
m_strFileName = AppDomain.CurrentDomain.BaseDirectory & m_strDefaultFilename
strFileName = m_strFileName
'If the UDL file cannot be found Create a new one
If Not File.Exists(m_strFileName) Then
m_strFileName = strFileName
CreateUDLFile(strFileName)
End If
myStreamReader = File.OpenText(m_strFileName)
' Read the entire file in one pass
m_strConnectionText = myStreamReader.ReadToEnd()
Catch exc As Exception
' Show the exception to the user.
Dim strDescription As String = "File could not be opened or read." + vbCrLf + _
"Please verify that the filename is correct, " + _
"and that you have read permissions for the desired " + _
"directory." + vbCrLf + vbCrLf + "Exception: " + exc.Message
Err.Raise(vbObjectError + 991, , strDescription)
RaiseEvent CloseApplication()
Finally
' Close the object if it has been created.
If Not myStreamReader Is Nothing Then
myStreamReader.Close()
End If
End Try
End Sub
Private Sub CreateUDLFile()Sub CreateUDLFile(ByVal strFileName As String)
'Create an empty text file
Dim fs As New System.IO.FileStream(strFileName, System.IO.FileMode.CreateNew)
fs.Close()
'Call Data Link App and write information to it
Dim prProcess As New ProcessStartInfo
prProcess.FileName = strFileName
Dim pProcess As Process = Process.Start(prProcess)
pProcess.WaitForInputIdle()
pProcess.WaitForExit()
pProcess.Close()
'Check if the created file is a valid UDl file, if not, delete it.
Dim myStreamReader As System.IO.StreamReader = System.IO.File.OpenText(strFileName)
Dim m_strConnectionText As String = myStreamReader.ReadToEnd()
myStreamReader.Close()
Dim strArray() As String = m_strConnectionText.Split(";")
If strArray(0).IndexOf("[oledb]") = -1 Then
If System.IO.File.Exists(strFileName) Then
System.IO.File.Delete(strFileName)
End If
End If
End Sub
#End Region
End Class
Dim MyconnData As New ConnData
public Myconn As New SqlConnection(MyconnData.GetSQLConnectionString)
Imports System
Imports System.IO
Public Class ConnDataClass ConnData
Private m_strFileName As String
Private m_strConnectionText As String
Private m_strPesistSecurity As String
Private m_strIntegradedSecurity As String
Private m_strReconstructed As String
Private m_strDefaultFilename As String
Private m_strDatasource As String
Private m_strPassword As String
Private m_strUserID As String
Private m_strCatalog As String 'Database
Public Event CloseApplication()
Public Sub New()Sub New()
m_strDefaultFilename = "DataLink.udl"
ReadFromFile()
SplitConnectionString()
End Sub
Public Function GetSQLConnectionString()Function GetSQLConnectionString() As String
ReconstructSQLConnectionString()
Return m_strReconstructed
End Function
Private Sub ReconstructSQLConnectionString()Sub ReconstructSQLConnectionString()
m_strReconstructed = m_strPesistSecurity & ";"
If Not IsNothing(m_strIntegradedSecurity) Then
m_strReconstructed &= m_strIntegradedSecurity & ";"
Else
m_strReconstructed &= m_strPassword & ";"
If Not m_strUserID.Length = 0 Then
m_strReconstructed &= m_strUserID & ";"
End If
End If
m_strReconstructed &= m_strCatalog & ";"
m_strReconstructed &= m_strDatasource & ";"
m_strCatalog = m_strCatalog.Substring(16)
m_strDatasource = m_strDatasource.Substring(12)
If Not IsNothing(m_strPassword) Then
m_strPassword = m_strPassword.Substring(9)
m_strUserID = m_strUserID.Substring(8)
End If
End Sub
格式化从*.udl文件中,读取的字符串#Region "格式化从*.udl文件中,读取的字符串"
Private Sub SplitConnectionString()Sub SplitConnectionString()
Dim strArray As String() = Nothing
Dim strString As String
Dim strProvider As String
Dim strDRIVER As String
Dim strSERVER As String
Dim strUID As String
Dim strDATABASE As String
strArray = m_strConnectionText.Split(";")
If strArray(0).IndexOf("[oledb]") = -1 Then
Dim nAnswer As DialogResult
nAnswer = MessageBox.Show("This file cannot be read" & vbCr & _
"Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)
If nAnswer = DialogResult.Yes Then
ReadFromFile()
SplitConnectionString()
Exit Sub
Else
Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"
Err.Raise(vbObjectError + 999, , strDescription)
RaiseEvent CloseApplication()
End If
End If
For Each strString In strArray
If strString.IndexOf("Provider") > -1 Then
strProvider = strString.Substring(strString.IndexOf("Provider"))
End If
If strString.IndexOf("Password") > -1 Then
m_strPassword = strString
End If
If strString.IndexOf("Data") > -1 Then
m_strDatasource = strString
End If
If strString.IndexOf("User") > -1 Then
m_strUserID = strString
End If
If strString.IndexOf("Initial") > -1 Then
m_strCatalog = strString
End If
If strString.IndexOf("Integrated") > -1 Then
m_strIntegradedSecurity = strString
End If
If strString.IndexOf("Persist") > -1 Then
m_strPesistSecurity = strString
End If
If strString.IndexOf("DRIVER") > -1 Then
strDRIVER = strString.Substring(strString.IndexOf("DRIVER"))
End If
If strString.IndexOf("SERVER") > -1 Then
strSERVER = strString
End If
If strString.IndexOf("UID") > -1 Then
strUID = strString
End If
If strString.IndexOf("DATABASE") > -1 Then
strDATABASE = strString
strDATABASE = strDATABASE.Remove(strDATABASE.Length - 3, 3)
End If
Next
'Check if the connection string connects to SQLServer or Oracle Server.
If strProvider.IndexOf("MSDASQL") > -1 Then
If strDRIVER.IndexOf("SQL Server") > -1 Then
m_strDatasource = "Data Source" & strSERVER.Substring(6)
If strUID.Length > 0 Then
m_strUserID = "User ID" & strUID.Substring(3)
End If
m_strCatalog = "Initial Catalog " & strDATABASE.Substring(8)
Else
'not sqlserver database
Dim nAnswer As DialogResult
nAnswer = MessageBox.Show("This file does not connect to SQL Server Database" & vbCr & _
"Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)
If nAnswer = DialogResult.Yes Then
ReadFromFile()
SplitConnectionString()
Exit Sub
Else
Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"
Err.Raise(vbObjectError + 999, , strDescription)
End If
End If
ElseIf strProvider.IndexOf("SQLOLEDB") > -1 Then
m_strDatasource = m_strDatasource.Remove(m_strDatasource.Length - 2, 2)
ElseIf strProvider.IndexOf("OraOLEDB") > -1 Then 'Oracle provider for OLEDB
ElseIf strProvider.IndexOf("MSDAORA") > -1 Then 'Microsoft Provider for Oracle
Else
'not Oracle or sqlserver database Connection
Dim nAnswer As DialogResult
nAnswer = MessageBox.Show("This file does not connect to Oracle Server or SQL Database" & vbCr & _
"Open another file ?", "Read udl File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Error)
If nAnswer = DialogResult.Yes Then
ReadFromFile()
SplitConnectionString()
Exit Sub
Else
Dim strDescription As String = "Connection Failed." & vbCr & "Closing Application"
Err.Raise(vbObjectError + 999, , strDescription)
End If
End If
End Sub
#End Region
读取*.UDL文件内容,如是*.UDL文件不存在,则创建#Region "读取*.UDL文件内容,如是*.UDL文件不存在,则创建"
Private Sub ReadFromFile()Sub ReadFromFile()
Dim myStreamReader As StreamReader
Dim strFileName As String
Try
m_strFileName = AppDomain.CurrentDomain.BaseDirectory & m_strDefaultFilename
strFileName = m_strFileName
'If the UDL file cannot be found Create a new one
If Not File.Exists(m_strFileName) Then
m_strFileName = strFileName
CreateUDLFile(strFileName)
End If
myStreamReader = File.OpenText(m_strFileName)
' Read the entire file in one pass
m_strConnectionText = myStreamReader.ReadToEnd()
Catch exc As Exception
' Show the exception to the user.
Dim strDescription As String = "File could not be opened or read." + vbCrLf + _
"Please verify that the filename is correct, " + _
"and that you have read permissions for the desired " + _
"directory." + vbCrLf + vbCrLf + "Exception: " + exc.Message
Err.Raise(vbObjectError + 991, , strDescription)
RaiseEvent CloseApplication()
Finally
' Close the object if it has been created.
If Not myStreamReader Is Nothing Then
myStreamReader.Close()
End If
End Try
End Sub
Private Sub CreateUDLFile()Sub CreateUDLFile(ByVal strFileName As String)
'Create an empty text file
Dim fs As New System.IO.FileStream(strFileName, System.IO.FileMode.CreateNew)
fs.Close()
'Call Data Link App and write information to it
Dim prProcess As New ProcessStartInfo
prProcess.FileName = strFileName
Dim pProcess As Process = Process.Start(prProcess)
pProcess.WaitForInputIdle()
pProcess.WaitForExit()
pProcess.Close()
'Check if the created file is a valid UDl file, if not, delete it.
Dim myStreamReader As System.IO.StreamReader = System.IO.File.OpenText(strFileName)
Dim m_strConnectionText As String = myStreamReader.ReadToEnd()
myStreamReader.Close()
Dim strArray() As String = m_strConnectionText.Split(";")
If strArray(0).IndexOf("[oledb]") = -1 Then
If System.IO.File.Exists(strFileName) Then
System.IO.File.Delete(strFileName)
End If
End If
End Sub
#End Region
End Class
相关文章推荐
- delphi 调用udl文件读写数据库连接信息
- VB.NET配置文件连接数据库--App.config文件
- VB.NET连接数据库方法大全
- C# asp.net 配置文件连接sql 数据库
- ASP.NET 2.0 遍历配置文件的数据库连接字符串
- [MySQL]VB.NET通过Pipe连接数据库
- vb.net合伙数据库access(一)——连接数据库
- asp.net文件上传代码/数据库巧妙连接
- Asp.net配置文件中数据库的连接
- 调用WindowsMediaPlayer控件播放多个文件【VB .NET】
- [VB.NET]vb.net如何连接odb数据库(OpenOffice里的那个数据库)
- VB.NET连接数据库,完成登录
- ASP.NET 2.0 遍历配置文件的数据库连接字符串
- VB.NET & DataGridView与数据库的连接
- 重构版机房收费系统之分层、接口、数据库连接、反射+工厂(vb.net)
- asp.net数据库连接,三层架构方法调用 (转)
- Asp.Net中Web.Config中的数据库连接字符串的调用方法(初学者实例)
- [VB.NET]连接数据库(一)
- VB.NET编程调用迅雷下载文件
- 发布NBearLite v1.0.0 beta - 全面支持SqlServer,Oracle,MySql,PostgreSql数据库存储过程调用代码生成(C#/VB.NET)