1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Dase de dados para windows CE

Discussão em 'Programação' iniciada por cook, 28 de Janeiro de 2009. (Respostas: 19; Visualizações: 1058)

  1. cook

    cook Power Member

    Boas,

    preciso criar uma aplicação para correr num pda com o windows ce 5.0. Essa aplicação vai trabalhar com acessos a base dados e a aplicação vai ser utilizada "Off-Line" ou seja a base de dados vai ter que estar a correr no pda...

    a minha pergunta é se conhecem motores de base de dados para windows ce 5.0. onde posso procurar? e quais os mais leves e fiaveis...

    desde já agradeço a ajuda...

    com os melhores cumprimentos
    Cook
     
  2. AliFromCairo

    AliFromCairo Power Member

    Penso que não tens grande escolha sem ser o SQL Server CE.
     
  3. CrazyBomber

    CrazyBomber Power Member

    SQLite, também.
    Já ouvi boas opiniões sobre esse :)
     
  4. cook

    cook Power Member

    pois eu acabei de instalar agr o sql server compact edition mas aquilo instala la as dlls e dps nao aparece nenhuma forma de criar lá uma base de dados. ou seja como depois isso vai funcionar? como adiciono base de dados? é preciso por sempre o serviço a correr para depois poder aceder? o que meto na connection string?

    agradecia ajudas... obrigado
     
  5. Se queres uma base de dados para o PDA, podes cria-la directamente pelo Visual Studio sem recorrer ao Sql Server.
     
  6. cook

    cook Power Member

    sim, mas o objectivo deste projecto é ter uma base de dados no pda... e depois varias aplicações no pda acederem a essa base de dados... ou seja por isso é que queria o genero de um motor de base de dados no pda... para ter o serviço a correr e dps as aplicações acediam lá.... como numa maquina normal... eu já instalei o ficheiros (sqlce30.dev.ENU.wce5.armv4i.CAB, sqlce30.repl.wce5.armv4i.CAB, sqlce30.wce5.armv4i.CAB) agora não sei como giro as base de dados como se gere num pc normal com o Sql Server Management Studio... penso que me fiz entender... posso ter sido um pouco confuso...
     
  7. AliFromCairo

    AliFromCairo Power Member

    Tens o SQL Query Analyzer que é bastante bom, e penso que vem com o pacote dev que instalaste. Podes criar lá a base de dados ou, alternativamente, através do código.
     
  8. cook

    cook Power Member

    ok obrigado... ja acedi e ja criei la uma base de dados e uma tabela... :) obrigado

    agora a minha questão é outra... como sei a instancia? por exemplo na querystring de uma aplicação para pc normal costuma ser o nome da maquina... aqui como é construida a querystring?
    o query analyzer é preciso estar a correr para aplicação la conseguir aceder? porque aquilo tem la um botaozinho de correr.... é preciso fazer sempre isso ou nao e preciso tal e qual como num pc normal que esta sempre o serviço a correr em background?

    obrigado
     
  9. AliFromCairo

    AliFromCairo Power Member

    Suponho que te estejas a referir à connection string. Não precisas de ter o Query Analyzer a correr; esta é apenas uma ferramenta semelhante (mas mais limitada, claro está) ao SQL Server Management Studio, mas versão mobile. Quando crias uma base de dados, é criado um ficheiro com a extensão .sdf (SQL Server Compact CE Database File), sendo que a tua connection string deve indicar onde este se encontra. Algo do género:

    Código:
    Data Source="\\Program Files\\Aplicação\\database.sdf"
    
    Eventualmente, irás precisar de colocar o Provider, ou outros parâmetros.

    Espero que ajude.
     
  10. cook

    cook Power Member

    sim estás a ajudar :) muito obrigado... ou seja no visual studio na aplicação que estou a fazer faço tal e qual como se fosse para uma base de dados normal.. mas depois na aplicação a querystring é que usa essa em vez da outra correcto?

    já agora aquilo tem uma password, a query string completa como ficaria? tem password mas nao tem user...

    desculpa lá tar a chatear mas preciso mesmo e é a primeira vez que tou a trabalhar com isto... :)

    desde já muito obrigado :)
     
  11. cook

    cook Power Member

    tive a testar e nao consegui obter acesso a base de dados.

    o erro que me dá é este: Specified SQL server not found: \\BDTeste\\bdteste.sdf
    a minha connection string é a seguinte...
    conStr = "Password=testepass;Persist Security Info=True;Initial Catalog=" & nomeBaseDados & ";Data Source=" & servidorBaseDados & ""

    em que o nome da base de dados passo bdteste.sdf e o servidorBaseDados passo \\BDTeste\\bdteste.sdf

    o posso tar a fazer mal? a pass ponho testepass
     
  12. AliFromCairo

    AliFromCairo Power Member

    As classes que tens que utilizar também são diferentes, mas no geral sim, a ideia é a mesma. Em relação à password, penso que é algo do género:

    Código:
    "Data Source=...; Password=..."
    
     
  13. cook

    cook Power Member

    as classes como assim? quais? do sql connection e isso?
     
  14. AliFromCairo

    AliFromCairo Power Member

    Sim. No caso do SQL Server CE, deves utilizar a classe SqlCeConnection, por exemplo.
     
  15. cook

    cook Power Member

    eu tou a usar tudo normal e ele nao me da erro na ligação nem nada.... ate tenho uma funcao que é getDataSet e ele passa essa funcao sem probs... depois quando uso esta linha para usar o dataset é que rebenta e diz NullReferenceException

    Dim ds As DataSet
    ds = New DataSet
    ds = lig.getDataSet("\\BDTeste\\bdteste.sdf", "bdteste", "select nome from pessoa")
    MsgBox("passei a ligacao: ")
    TextBox1.Text = ds.Tables(0).Rows(0).Item("nome")
     
  16. AliFromCairo

    AliFromCairo Power Member

    Se for possível, coloca o resto do código para poder verificar o que estás a fazer.
     
  17. cook

    cook Power Member

    aqui tão os tres metodos que tenho na classe ligacao ou seja tenho o ligar, desligar e o getdataset
    Código:
    Public Sub ligar(ByVal servidorBaseDados As String, ByVal nomeBaseDados As String)
    
                 Dim conectar As Boolean = False
    
                 If cn Is Nothing Then
    
                         conectar = True
                 ElseIf Not (cn.State = ConnectionState.Connecting) Then
    
                         conectar = True
                 End If
    
        If conectar Then
                          conStr = "Password=testepass;Persist Security Info=True;Initial Catalog=" & nomeBaseDados & ";Data Source=" & servidorBaseDados & ""
                          cn = New SqlConnection(conStr)
                End If
    
        If Not (cn Is Nothing) Then
                          If cn.State = ConnectionState.Closed Then
                                    cn.Open()
                          End If
                End If
    
        End Sub
    
    
        Public Sub desligar()
    
               If Not (cn Is Nothing) Then
                     If cn.State = ConnectionState.Open Then
                           cn.Close()
                           cn.Dispose()
                          cn = Nothing
                     End If
               End If
    
        End Sub
    
        Public Function getDataSet(ByVal servidorBaseDados As String, ByVal nomeBaseDados As String, ByVal sql As String) As DataSet
            Try
                   Dim ds As DataSet
                   Dim cm As SqlCommand
                   Dim dr As SqlDataAdapter
                   ligar(servidorBaseDados, nomeBaseDados)
                   cm = New SqlCommand(sql, cn)
                   dr = New SqlDataAdapter(cm)
                   ds = New DataSet
                   dr.Fill(ds)
                   desligar()
                   Return ds
            Catch ex As Exception
                   desligar()
                Return Nothing
            End Try
        End Function
     
    depois no form no click do botao tenho isto
    Código:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim lig As ligacao
            lig = New ligacao
            Dim ds As DataSet
            ds = New DataSet
            ds = lig.getDataSet("\\BDTeste\\bdteste.sdf", "bdteste", "select nome from pessoa")
            MsgBox("passei a ligacao: ")
            TextBox1.Text = ds.Tables(0).Rows(0).Item("nome")
        End Sub
     
    ele chega a mandar essa MsgBox mas dps rebenta quando usa o dataSet para por na textbox
     
    Última edição pelo moderador: 29 de Janeiro de 2009
  18. AliFromCairo

    AliFromCairo Power Member

    Precisas de utilizar as classes específicas do SQL Server CE. Vê se isto e isto ajuda. O facto de ele mostrar a mensagem, não quer dizer que a ligação tenha sido bem sucedida. Verifica o valor da variável.

    Já agora, quando colocares código no fórum, utiliza a tag CODE (símbolo do cardinal).
     
  19. cook

    cook Power Member

    ok, obrigado

    vou entao tentar testar depois dou um feedback para saberes se consegui...

    obrigado pela ajuda...
     
  20. cook

    cook Power Member

    AliFromCairo muito obrigado... :)

    já consegui comunicar com a base de dados.... :) agr ja me vou tentar desenrrascar...

    mais uma vez obrigado..:)
     

Partilhar esta Página