Re: [.NET] 請問連接access一定要用oledb的規格嗎??
※ 引述《rightright2 (RR2)》之銘言:
: 我用odbc的規格去連,open()可以,但是執行fill()或是execReader()就會說我的
: [microsoft][ODBC microsoft Access Driver]參數太少,錯誤碼 07002
: 到底是為甚麼,有人知道怎麼解決嗎??
: 剛溫q.Q"
程式碼...我貼..
//----------------------
'引入命名空間
Imports System.Data
Imports System.Data.Odbc
Imports System.Configuration
Imports ODBCTool
Imports System
Imports Microsoft.SqlServer.Server
Public Class Test_Sport_Center_
Private temp_password As String
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles TextBox_TestUID.TextChanged,
TextBox_Password.TextChanged
End Sub
Private Sub Button1_Enter_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1_Enter.Click
Dim password_query_string As String
QueryMember(TextBox_Password.Text)
' My.Computer.Keyboard.SendKeys("{End}")
End Sub
'將組態檔進行加密
Public Sub ProtectionConfiguration()
Dim config As Configuration
config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
' 定義Dpapi提供者名稱.
Dim provider As String = "DataProtectionConfigurationProvider"
'也可以用"RsaProtectedConfigurationProvider";
Dim connStrings As ConfigurationSection =
config.GetSection("connectionStrings")
If (Not connStrings Is Nothing) Then
If (Not connStrings.SectionInformation.IsProtected) Then
If (Not connStrings.ElementInformation.IsLocked) Then
connStrings.SectionInformation.ProtectSection(provider)
connStrings.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Full)
End If
End If
End If
End Sub
Function QueryPassword(ByVal keyword As String) As String
Dim SQLCommand As String = ""
Dim bufString As String = ""
SQLCommand = "Select Member_ID from TAG WHERE TAG.UID=" &
TextBox_TestUID.Text & "%"
Dim dt As New DataTable
CreateDataTable(SQLCommand, "TAG", dt)
bufString = dt.Rows.Equals("Member_ID")
bufString = Me.TextBox_TestUID.Text
Return bufString
' Me.Combo_QueryItem.Items.Clear()
'For Each DR As DataRow In dt.Rows
' Me.Combo_QueryItem.Items.Add(DR("Word"))
' If (Me.Combo_QueryItem.Text = DR("Word")) Then
' RTB_ChinesExplain.Text = bufString & vbCrLf &
DR("ChinesExplain").ToString()
' RTB_Phrase.Text = DR("Phrase").ToString()
' RTB_Synonym.Text = DR("Synonym").ToString()
' End If
'Next
End Function
Sub QueryMember(ByVal keyword As String)
Dim SQLCommand As String = ""
Dim bufString As String = ""
SQLCommand = "Select
ID,Name,Sex,Phone,Birthday,E-mail,Address,Last_Serviced_OperatorID FROM
Member,TAG WHERE Member.Passwords = " & TextBox_Password.Text & " AND TAG.UID
= " & TextBox_TestUID.Text & ""
Dim dt As New DataTable
CreateDataTable(SQLCommand, "Member", dt)
Text_MemberName.Text = dt.Rows.Equals("Name")
bufString = Me.TextBox_TestUID.Text
End Sub
'Private Sub Combo_QueryItem_TextChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Combo_QueryItem.TextChanged
' QueryPassword(Combo_QueryItem.Text)
' My.Computer.Keyboard.SendKeys("{End}")
'End Sub
Sub CreateDataTable(ByVal SQLString As String, ByVal TableName As String,
ByRef ParaDT As DataTable)
Try
'連線字串宣告
Dim settings As ConnectionStringSettings
'↓此行不知道可不可以省略,應該是可以在此重置"ConnectingString"裡
的資料
settings =
ConfigurationManager.ConnectionStrings("Test_Soprt_Cenetr.My.MySettings.ODBC_ConnectionString")
MsgBox(settings.ConnectionString)
'step 1
Dim conn As OdbcConnection = New OdbcConnection("DSN=99999")
'settings.ConnectionString
'temp_password = conn.Driver()
conn.Open()
Dim cmd As New OdbcCommand
cmd.CommandText = SQLString
cmd.CommandTimeout = 20
cmd.CommandType = CommandType.Text
cmd.Connection = conn
Dim myReader As OdbcDataReader
'cmd = New OdbcCommand(SQLString, conn)
'step 2
Dim da As OdbcDataAdapter = New OdbcDataAdapter(SQLString, conn)
Dim ds As New DataSet
' Dim dtt As DataTable
'dtt.Clear()
'step 3
myReader = cmd.ExecuteReader()
Text_MemberName.Text = myReader.Item("Name")
'MsgBox(da.SelectCommand().CommandText() = SQLString)
'MsgBox(da.SelectCommand(SQLString))
'da.Equals("Name")
'' Text_MemberName.Text = da.SelectCommand().ToString
'da.Fill(ParaDT) ''填入DataTable中 ??
'da.Fill(ds) ''填入dataSet中 ??
'myReader = cmd.ExecuteReader()
'myReader.Read()
'myReader.GetValues("Name")
'Text_MemberName.Text = myReader.Item("Name")
'myReader.Close()
'myReader.Dispose()
'//-----------------------------------//
conn.Close()
conn.Dispose()
da.Dispose()
ds.Dispose()
' ParaDT = ds.Tables(TableName)
'da.comm()
'da.SelectCommand().CommandText = "Select
ID,Name,Sex,Phone,Birthday,E-mail,Address,Last_Serviced_OperatorID FROM
Member,TAG WHERE Member.Passwords = " & TextBox_Password.Text & " AND TAG.UID
= " & TextBox_TestUID.Text & ""
'da.Fill(ParaDT)
Catch ex As Exception
MsgBox("請確定Dictionary.mdb檔案存在且存放於\bin\Debug , 錯誤訊息
為: " & ex.Message.ToString())
End Try
End Sub
Private Sub Test_Sport_Center__Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
ProtectionConfiguration()
End Sub
//---------------
CreateTable中是主要出現問題的地方
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.209.196.27
討論串 (同標題文章)