none
pocket pc 資料庫連結 RRS feed

  • 問題

  •  最近使用vs2003在開發PDA上的程式

    想要寫從裝置上連結到sql server2000上的程式,抓回資料dataset的程式,

    想請問有哪些方式? 

                                                                                                     感激不盡

     

    2006年8月17日 下午 01:05

解答

  • HI,

    基本上您可以:

    1.直接連上資料庫, 但是因為行動裝置的使用者移動性高, 所以這種做法不是很適合

    2.利用XML Web Service連上資料庫

    3.利用SQL Server CE, 但是傳回的不是DataSet

    所以要得到DataSet的話, 可以利用第二種做法

    tihs

    2006年8月17日 下午 01:48
  • HI,

    您可以在以下這一行程式:

     da = New System.Data.SqlClient.SqlDataAdapter(cmd)

    的後面加入以下的程式:

    Dim cb as SqlCommandBuilder=new SqlCommandBuilder(da)

    然後再執行看看會不會成功

    tihs

     

    2006年8月25日 上午 11:16

所有回覆

  • HI,

    基本上您可以:

    1.直接連上資料庫, 但是因為行動裝置的使用者移動性高, 所以這種做法不是很適合

    2.利用XML Web Service連上資料庫

    3.利用SQL Server CE, 但是傳回的不是DataSet

    所以要得到DataSet的話, 可以利用第二種做法

    tihs

    2006年8月17日 下午 01:48
  • 感謝this , 那請問我想在pda與本機同步時,將本機資料庫的資料 丟資料到pda上,接著斷線 在pda上處理資料 處理完後再同步

    存回本機資料庫,比較適合哪種??

    2006年8月17日 下午 02:45
  • HI,

    您要做到的功能, 三種方法都可以做到, 之前會建議第二種做法是因為您想要處理DataSet型態的內容, 如果您用的是ADO.NET 1.1, 在網路上傳遞DATASET要注意資料體積的大小, 如果因為體積過大造成負擔的話, 可以考慮改到記錄的陣列

    tihs

    2006年8月18日 上午 12:55
  • 感謝this 

                 我要處理的資料不大,但我在書上看到這樣的範例

            Dim cn As System.Data.SqlClient.SqlConnection
            Dim cmd As System.Data.SqlClient.SqlCommand
            Dim da As System.Data.SqlClient.SqlDataAdapter

            Try
                ' 建立與SQL Server資料庫的連線
                cn = New System.Data.SqlClient.SqlConnection("user id=sa;password=;database=Northwind;server=LINUX-LI2I5TGZ4")
                cmd = New System.Data.SqlClient.SqlCommand("Select * From Customers", cn)
                da = New System.Data.SqlClient.SqlDataAdapter(cmd)

     

                ' 加入新的資料表
                Dim dt As System.Data.DataTable = New System.Data.DataTable("Customers"
                da.Fill(dt)
                ds.Tables.Add(dt)

    但載入的結果卻跑出來一個msgbox說 :

     在連結選項中找到無效的分隔符號 ":" user id


    這地方困擾我很久了 麻煩指點 謝謝

    2006年8月18日 上午 02:05
  • HI,

    錯誤訊息看起來像是資料庫連線資訊有錯, 您可以將:

    cn = New System.Data.SqlClient.SqlConnection("user id=sa;password=;database=Northwind;server=LINUX-LI2I5TGZ4")

    改成:

    cn = New System.Data.SqlClient.SqlConnection("Data Source=LINUX-LI2I5TGZ4;Initial Catalog=Northwind;user id=sa;password=;)

    再試試看

    另外:

    Dim dt As System.Data.DataTable = New System.Data.DataTable("Customers"
    這一行好像缺少右邊的小括號

    tihs

    2006年8月18日 上午 11:51
  • 可以了!! 可以了!!!  非常感謝this  謝謝
    2006年8月18日 下午 05:42
  • Hi,

              this大哥(姊),小弟又碰到問題了,書上範例寫著永久儲存資料的方式,卻行不通,想請教是哪裡出問題?

         Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        Try
          da.Update(dt)
                MsgBox("儲存...")
        Catch ex As Exception
                MsgBox("發生例外狀況 - " & ex.Message.ToString)
        End Try
      End Sub

     

    麻煩指教 謝謝

     

    2006年8月24日 下午 01:46
  • HI,

      Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        Try
          da.Update(dt)
                MsgBox("儲存...")    '這一行是要將PDA編輯過的記錄寫回資料庫
        Catch ex As Exception
                MsgBox("發生例外狀況 - " & ex.Message.ToString)
        End Try
      End Sub

    如果是在上述紅色程式碼的地方出錯, 就是寫回資料庫失敗, 需要看一下程式顯示的錯誤訊息才能知道問題所在?

    tihs

    2006年8月25日 上午 12:58
  • hi,

         是這樣的,有兩種情形

    第一種是當進行修改,寫回資料庫時,da.Update(dt)這行能順利換到下一行跑出顯示"儲存"的對話框,但我再開啟程式時,修改過的資料呈現尚未修改的樣子

    第二種   是進行 新增或刪除 寫回資料庫時 da.Update(dt) 卻會直接 跳到 Catch ex As Exception  MsgBox("發生例外狀況 - " & ex.Message.ToString)

    如果資訊不夠詳細,麻煩再告知 謝謝 

     

    2006年8月25日 上午 02:20
  • HI,

    第一種狀況需要了解您的程式中是如何建立da這個物件的, 如果da物件是以下列的方式建立的:

     da = New System.Data.SqlClient.SqlDataAdapter(cmd)

    第二種狀況需要您提供詳細的錯誤訊息才有辦法判斷

     

    tihs

    2006年8月25日 上午 03:32
  • hi,

       我的da 是以da = New System.Data.SqlClient.SqlDataAdapter(cmd)的方式建立,

    但要去哪才能找到我所需要的詳細錯誤訊息呢?

     目前只會出現  "發生例外狀況 -update"  與 "發生例外狀況 -delete" 的對話框

     

     

    2006年8月25日 上午 08:04
  • HI,

    您可以在以下這一行程式:

     da = New System.Data.SqlClient.SqlDataAdapter(cmd)

    的後面加入以下的程式:

    Dim cb as SqlCommandBuilder=new SqlCommandBuilder(da)

    然後再執行看看會不會成功

    tihs

     

    2006年8月25日 上午 11:16
  • hi,

    由於直接加入  

    Dim cb as SqlCommandBuilder=new SqlCommandBuilder(da)

     會出現  未宣告SqlCommandBuilder   的除錯訊息 所以 我改成

     Dim cb As System.Data.SqlClient.SqlCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(da)

    放在da = New System.Data.SqlClient.SqlDataAdapter(cmd)的後面,

    之後修改資料仍傳不回去,

    進行新增,刪除則會出現一個msgbox,上面寫著

    發生例外狀況 - 沒有傳回任何索引鍵資料行資訊的

    SelectCommand 不支援

    DeleteCommand 的動態

    SQL產生

    2006年8月25日 下午 03:51
  • HI,

    在我的電腦中, 利用您的程式碼可以成功將修改過的記錄寫回資料庫, 從您的錯誤訊息來看好像是Customers資料表沒有主索引鍵的問題, 您可以看一下您的Customers資料表有沒有設定主索引鍵, 沒有主索引鍵, SqCommandBuilder會沒有作用

    tihs

    2006年8月26日 上午 06:29
  • hi

    沒錯我忘記設定主索引鍵了 實在是非常感謝this 謝謝 

    2006年8月26日 上午 10:34
  • 請問husky1027大大,在您文中有看到書上有教如何PDA連資料庫的感覺?!

    想請問說您是參考哪本書的??

    因為最近也找了很多VB.Net的書,但是很少提到For PDA的連資料庫的部份。

    PS:我用的是VS .net 2003 跟您一樣。

    希望能撥空回覆!! 謝謝嚕!! ^^

    2006年8月28日 上午 04:36
  • hi,

       我參考的書是 博碩 出版的 ".NET Compact Framework徹底研究-智慧行動裝置應用程式開發"

        此網址供您參考 http://www.books.com.tw/exep/prod/booksfile.php?item=0010290095 

    2006年8月29日 下午 02:17
  • 謝嚕!!! ^^

    (其實這本書我也有看到...不過我怎麼都沒發現裡面就有了...>"<  )

    2006年8月29日 下午 02:23
  •  

    大概從第九章開始吧,不過誠如所您所見,小弟也碰到困難之處,如果大大有找到更好的參考 希望能順便與小弟分享

     

    2006年8月29日 下午 02:33
  • 請問 tish , 您所提及的方法1 的工作方式為如何?? 也想請問您為什麼不是很適合呢??

    感謝您的回答

    2006年9月21日 上午 03:47