zoukankan      html  css  js  c++  java
  • 解决用ADODB对Access数据库进行操作的一个问题

    问题:[microsoft][odbc microsoft access driver]标准表达式中数据类型不匹配
    原因:Sql语句书写格式不标准
     解决办法:
            如:  string sqlstr="select * from student where studentId>='" + Convert.ToInt32(this.textBox1.Text)+"'";
            应改为:string sqlstr="select * from student where studentId>=" + Convert.ToInt32(this.textBox1.Text);

    private void button1_Click(object sender, System.EventArgs e)
            
    {
                DataSet myDS;
                myDS
    =new DataSet();
                myDS
    =cgtdb.GetDataFromAccess(accessDbname,"admin","123","select * from student where studentId>=" + Convert.ToInt32(this.textBox1.Text),"student" );
                
    if(myDS!=null)
                
    {
                    
    this.dataGrid1.DataSource =myDS.Tables[0];  
                    MessageBox.Show(myDS.Tables[
    0].Rows[0][0].GetType().ToString()      ) ;
                }

                
            }
    Public Function DataTransition_ADODBCon() As ADODB.Connection
            Dim conn As New ADODB.Connection()
            Try
                ReadIniFile()
                conn.ConnectionString 
    = "Provider=SQLOLEDB;Data Source='" & Trim(SqlServerName_Str_Pub) & " ';Initial Catalog='" & Trim(SqlInitDB_Str_Pub) & "';Integrated Security=SSPI;" & " ," & " '" & Trim(SqlUserName_Str_Pub) & "" & " , " & " '" & Trim(SqlUserPassWord_Str_Pub) & "'" & "" & " -1"
            Catch
                MsgBox(
    " MyOleConStr 错误号: " & Err.Number.ToString & "  错误描述 : " & Err.Description.ToString)
            End Try
            DataTransition_ADODBCon 
    = conn
        End Function



        Public Function SqlConStr() As String
            Dim sqlconstring As String 
    = ""
            Try
                ReadIniFile()

                sqlconstring 
    = "data source=" & Trim(SqlServerName_Str_Pub) & "; initial catalog=" & Trim(SqlInitDB_Str_Pub) & ";  persist security info=true; user id=" & Trim(SqlUserName_Str_Pub) & "; Password=" & Trim(SqlUserPassWord_Str_Pub) & ";  workstation id=" & Trim(SqlServerName_Str_Pub) & "; packet size=4096"
            Catch
                MsgBox(
    "错误号: " & Err.Number.ToString & "  错误描述 : " & Err.Description.ToString)
            End Try
            Return sqlconstring
        End Function

        Public Function SqlConStr2() As String
            Dim sqlconstring As String 
    = ""
            Try
                ReadIniFile()

                sqlconstring 
    = Trim(SqlServerName_Str_Pub) & "\" & Trim(SqlInitDB_Str_Pub) & "\" & Trim(SqlUserName_Str_Pub) & "\" & Trim(SqlUserPassWord_Str_Pub)
            Catch
                MsgBox(
    "SqlConStr  错误号: " & Err.Number.ToString & "  错误描述 : " & Err.Description.ToString)
            End Try
            Return sqlconstring
        End Function


        
    '*************************************************************************************************************************************************'
        
    '1.2.连接ACCESS数据库
        '*************************************************************************************************************************************************'
        Public Function Access_OleDBCon(ByVal DBPath As String) As OleDbConnection
            Dim OleCon As OleDbConnection 
    = New OleDbConnection()
            
    'Dim DBPath As String = "d:\mrfu\DriverManager.mdb"
            OleCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & DBPath & "'"
            Return OleCon

        End Function

        
    '*************************************************************************************************************************************************'
        
    '对ACCESS数据库进行操作
        '*************************************************************************************************************************************************'

        Public Function Access_ADODBConNeedPassword(ByVal DBPathAndDatabaseName As String, ByVal UserID As String, ByVal Password As String, ByVal SqlStr As String) As String

            Dim FlagStr As String 
    = "0"
            Dim ConnectionString As String 
    = ""


            ConnectionString 
    = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
                               
    "DBQ=" & DBPathAndDatabaseName & ";DefaultDir=;" & _
                               
    "UID=" & UserID & ";" & _
                               
    "PWD=" & Password & ";"
            Dim Adocon As ADODB.Connection
            Try


                Adocon 
    = New ADODB.Connection

                Adocon.ConnectionString 
    = ConnectionString
                Adocon.ConnectionTimeout 
    = 120
                Adocon.CommandTimeout 
    = 160
                Adocon.Open()


                Adocon.Execute(SqlStr)

                Adocon.Close()

                Adocon 
    = Nothing
                FlagStr 
    = "1"

            Catch
                If Adocon.State 
    = ConnectionState.Open Then
                    Adocon.Close()
                End If
                FlagStr 
    = "0"
                MsgBox(Err.Description.ToString, MsgBoxStyle.Exclamation, 
    "错误提示")

            End Try

            Return FlagStr


        End Function

        
    '*************************************************************************************************************************************************'
        
    '访问ACCESS数据库,并返回小批量数据
        '*************************************************************************************************************************************************'
        Public Function Access_GetDataReturnArrayList(ByVal DBPathAndDatabaseName As String, ByVal UserID As String, ByVal Password As String, ByVal SqlStr As String, ByVal TableName As String, ByVal FiledsName As String) As ArrayList

            Dim TempArrayList As ArrayList
            TempArrayList 
    = Nothing
            Dim rs As ADODB.Recordset
            Dim ConnectionString As String 
    = ""
            ConnectionString 
    = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
                               
    "DBQ=" & DBPathAndDatabaseName & ";DefaultDir=;" & _
                               
    "UID=" & UserID & ";" & _
                               
    "PWD=" & Password & ";"
            Dim Adocon As ADODB.Connection
            Try
                Adocon 
    = New ADODB.Connection
                Adocon.ConnectionString 
    = ConnectionString
                Adocon.ConnectionTimeout 
    = 120
                Adocon.CommandTimeout 
    = 160
                Adocon.Open()
                rs 
    = New ADODB.Recordset
                rs.Open(SqlStr, Adocon, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, CInt(ADODB.CommandTypeEnum.adCmdText))

                TempArrayList 
    = New ArrayList

                
    '如果记录集为空,输出一个错误信息
                If (rs.BOF Or rs.EOF) Then
                    Adocon.Close()
                    Adocon 
    = Nothing
                    rs 
    = Nothing

                    MsgBox(
    "没有找到任何记录,请检查你的" & TableName & " 表 ", MsgBoxStyle.Information, "系统消息")

                    Return TempArrayList
                End If
                
    '循环存入数据

                While (Not rs.EOF)
                    TempArrayList.Add(rs.Fields(FiledsName).Value.ToString())

                    rs.MoveNext()

                End While
                Adocon.Close()

                Adocon 
    = Nothing
                rs 
    = Nothing

            Catch
                If Adocon.State 
    = ConnectionState.Open Then
                    Adocon.Close()
                End If

                MsgBox(Err.Description.ToString, MsgBoxStyle.Exclamation, 
    "错误提示")

            End Try
           

            Return TempArrayList


        End Function

        
    '*************************************************************************************************************************************************'
        
    '访问ACCESS数据库,并返回数据集
        '*************************************************************************************************************************************************'
        Public Function GetDataFromAccess(ByVal DBPathAndDatabaseName As String, ByVal UserID As String, ByVal Password As String, ByVal SqlStr As String, ByVal TableName As String) As DataSet
            Dim custDA As OleDbDataAdapter 
    = New OleDbDataAdapter
            Dim custDS As DataSet 
    = New DataSet

            Dim rs As ADODB.Recordset
            Dim ConnectionString As String 
    = ""
            ConnectionString 
    = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
                               
    "DBQ=" & DBPathAndDatabaseName & ";DefaultDir=;" & _
                               
    "UID=" & UserID & ";" & _
                               
    "PWD=" & Password & ";"
            Dim Adocon As ADODB.Connection
            Try
                Adocon 
    = New ADODB.Connection
                Adocon.ConnectionString 
    = ConnectionString
                Adocon.ConnectionTimeout 
    = 120
                Adocon.CommandTimeout 
    = 160
                Adocon.Open()
                rs 
    = New ADODB.Recordset
                rs.Open(SqlStr, Adocon, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, CInt(ADODB.CommandTypeEnum.adCmdText))

                
    '如果记录集为空,输出一个错误信息
                If (rs.BOF Or rs.EOF) Then
                    Adocon.Close()
                    Adocon 
    = Nothing
                    rs 
    = Nothing

                    MsgBox(
    "没有找到任何记录,请检查你的" & TableName & " 表 ", MsgBoxStyle.Information, "系统消息")

                    Return custDS
                End If
                
    '存入dataset数据


                custDA.Fill(custDS, rs, 
    "Customers")
                Adocon.Close()
                Adocon 
    = Nothing
                rs 
    = Nothing

            Catch
                If Adocon.State 
    = ConnectionState.Open Then
                    Adocon.Close()
                End If

                MsgBox(Err.Description.ToString, MsgBoxStyle.Exclamation, 
    "错误提示")

            End Try


            Return custDS


        End Function
  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/furenjun/p/385692.html
Copyright © 2011-2022 走看看