none
如何利用ODBC讀取網路上的資料庫內容 RRS feed

  • 問題

  • 請教各位大大!

    小弟在A電腦(WinXP)(IP:100.100.1.1)建立一個分享資料夾,放置一個MDB檔,B電腦(Win7)(IP:100.100.1.2) 寫了一段VB連線程式做資料庫讀取用

    在B電腦的資料來源中(使用者資料來源中新增一個NET_TEST連線至A電腦的分享資料夾(Z:\Buffer))

    以下是連線語法

     
    Dim my_Conn As New System.Data.Odbc.OdbcConnection
            ' my_Conn.ConnectionString = "DSN=NET_TEST" 
            my_Conn.ConnectionString = ("FIL=MS Access;dsn=NET_TEST;uid=sa;pwd=myPassword;")
    
            Try
                my_Conn.Open()
              
            Catch OdbcEx As System.Exception
    
                MessageBox.Show("錯誤的資料庫")
    
            Finally
                Dim strSQL As String = " select * from DataBank "
                Dim my_DataAdapter As New System.Data.Odbc.OdbcDataAdapter(strSQL, my_Conn)
                Dim my_DataSet As New DataSet
               my_DataAdapter.Fill(my_DataSet, "DataBank")
    
                        my_Conn.Close()
            End Try
    

     Dim strSQL As String = " select * from DataBank Where Product = A "  則會出現準則運算式的資料類型不符合。

    請教各位大大語法上該如何修正?


    新手上路

    2013年12月20日 上午 01:46

所有回覆

  • 語法修正後 若不加篩選條件則已可讀出資料內容:

     Public Sub ConnectToOdbc()
            Dim my_Conn As New OdbcConnection
            Dim mycom As OdbcCommand
            ' my_Conn.ConnectionString = "DSN=NET_TEST" ' <-- 已經在控制台設入 NET_TEST
            my_Conn.ConnectionString = ("FIL=MS Access;dsn=NET_TEST;uid=sa;pwd=myPassword;")
            Try
                my_Conn.Open()
            Catch OdbcEx As System.Exception
                MessageBox.Show("錯誤的資料庫")
            Finally
                Dim strSQL As String = " select * from DataBank Where Product = @Product "
                Dim my_DataSet As New DataSet
                Dim OleDbda As OdbcDataAdapter
                mycom = New OdbcCommand(strSQL, my_Conn)
                mycom.Parameters.AddWithValue("@Product", 1)
                OleDbda = New OdbcDataAdapter(mycom)
                Dim ds As DataSet
                ds = New DataSet()
                OleDbda.Fill(ds, "DataBank")
                DataGridView1.DataSource = ds.Tables("DataBank")
                my_Conn.Close()
            End Try
    
        End Sub

    加入篩選條件後:

    ERROR [07002] [Microsoft][ODBC Microsoft Access Driver] 參數太少,預期個數 1


    新手上路

    2013年12月20日 上午 02:15
  • " select * from DataBank Where Product = @Product " 修改成 " select * from DataBank Where Product = ?" 即可做篩選!

    感謝檢視這個問題的大大們!小弟已測出~


    新手上路

    2013年12月20日 上午 02:22
  • 跨網路的話,實在不合適使用 Access。

    試試免費的 sql server express, http://www.microsoft.com/zh-tw/download/details.aspx?id=29062 

    這一篇有教如何跨網路存取:http://blog.kkbruce.net/2009/08/microsoft-sql-server-2008-express.html


    理直氣和,切記。

    Blog: http://blog.kkbruce.net

    Book:《ASP.NET MVC 4 網站開發美學

    2013年12月20日 上午 02:38
  • 感謝大大的建議

    我會研究一下 利用sql server express.


    新手上路

    2013年12月20日 上午 10:58
  • Access 為檔案型資料庫,透過 odbc / oledb 方式存取查詢。

    因此,所有資料都要由 client 端讀取 server 端透過 driver 讀取,server 端本身並不對檔案做查詢,僅是提供檔案空間。

    此外,Access 資料庫能被 client 端存取時,server 端必須權限全開,即使是隱藏目錄,也很容易透過封包擷取讀到路徑,然後可以隨意對 Access 資料庫進行任何事,包含刪除或是輸入假資料。

    這是不適合的原因。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2013年12月20日 下午 01:45