• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mcosta

criar base de dados

27 mensagens neste tópico

ola pessoal,

eu estou a fazer um programa em smart device application do vbnet.

O meu problema é que: eu crio uma base de dados sql server compact edition

O código é este:

        Dim engine As New System.Data.SqlServerCe.SqlCeEngine("data source=login4.sdf")

        Dim constr As String = "Data Source = login4.sdf"

        Dim con As New SqlCeConnection(constr)

        Dim str As String = "create table teste(ID UNIQUEIDENTIFIER NOT NULL, name ntext,pass ntext)"

        Dim cmd As New SqlCeCommand(str, con)

        If (File.Exists("login4.sdf")) Then

            Dim query1 As String

            Dim user As String = TextBox1.Text

            Dim pws As String = TextBox2.Text

            con.Open()

            cmd.CommandText = "insert into teste(id,name, pass) values('" & Guid.NewGuid().ToString() & "','" & user & "','" & pws & "'  )"

            cmd.ExecuteNonQuery()

            MessageBox.Show("inseriu")

            'cmd.CommandText = "Select name from teste"

            'cmd.ExecuteNonQuery()

            'Dim res As String = cmd.CommandText.ToString()

            'MessageBox.Show("Valor = " & res, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)

            con.Close()

        Else

            MessageBox.Show("não existe")

            engine.CreateDatabase()

            MessageBox.Show("criou base de dados")

            con.Open()

            cmd.ExecuteNonQuery()

            con.Close()

        End If

    End Sub

O problema é que de cada vez que fecho o executavel ele perde a base de dados e quando executo novamente ele cria uma nova...

Alguém me ajuda a resolver este problema por favor!!!!

Eu apenas queria criar a base de dados a primeira vez que executo e depois ela se mantivesse sempre.....

Obrigados...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah...peço desculpa mas acho que não expliquei tudo...

eu o data source que passo é:

"Data source = login4.sdf" porque depois para criar no pda não pode ter o C:

no entanto quando executo não sei onde cria a base de dados e para tentar ver onde executa passei o

"data source =C:\login4.sdf no entanto a executar assim da erro ao criar a bd....diz que a path não é válida...

preciso mesmo muito de ajuda...

obrigado a todos!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obrigado por responderes.

Também não dá.

Quando passo: "data source = C:\\login4.sdf" dá este erro:

SqlCe exception was unhandled

The path is not valid. Check the directory for the database. [ Path = C:\\login4.sdf ]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim constr As String = "Data Source = login4.sdf;"  tenta assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, assim é como eu tinha....

o problema é que assim cria a base de dados onde???

porque assim passo as messagebox.show todas...

a messagem a dizer que criou base de dados, que criou tabela, que inseriu...

o problema é que depois faço um datagrid e ele não me devolve nada por isso queria saber onde está a base de dados!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim CurrentPath As String

CurrentPath = Application.StartupPath & "\"

If My.Computer.FileSystem.FileExists(CurrentPath & "login4sdf") Then

faz esta validacao em vez da tua

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ola pessoal,

eu estou a fazer um programa em smart device application do vbnet.

(...)

O problema é que de cada vez que fecho o executavel ele perde a base de dados e quando executo novamente ele cria uma nova...

Alguém me ajuda a resolver este problema por favor!!!!

Eu apenas queria criar a base de dados a primeira vez que executo e depois ela se mantivesse sempre.....

Obrigados...

E, em que evento é que colocaste o código? No evento Load?

No entanto, não percebo como é que depois consegues voltar a criar uma base de dados, com o mesmo nome, no mesmo sítio... De certeza que cria uma base de dados?

Não sei como funciona a criação e localização de bases de dados em smart devices, mas talvez isto te dê uma ajuda:

http://www.marcosdellantonio.net/2007/03/26/net-como-acessar-arquivos-em-um-smart-device/

http://www.portugal-a-programar.pt/index.php?showtopic=25908

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois....

eu também por isso queria criar no c: para ver onde coloca mas assim da erro....

o engraçado é que ele assim executa tudo e põe-me as messagebox mas nada de base de dados...ja fiz uma procura no pc e não encontra login.sdf em lado nenhum....

então achas que é o código para criar a base de dados que está errado??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o teu user e administrador, usas o vista ?

fizeste aquela validacao que te disse?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A validação que tu disseste dá 2 erros que não sei corrigir...já os pus no tópico..

não, o user é uma variavel para ler um login.é simplesmente uma variavel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a tua validação da erro no

startup diz que not member de system.windows.form.application

e no computer -not member do My

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

diz me uma coisa no teu ambiente de desenvolvimente corre bem?

ou e no ao correr no pda que da o erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ainda não testei no pda...

só teste no emulador do smart device...

e corre bem, pelas messagebox passa pela criação da bd da tabela e diz que inseriu só que vou para consultar e nada...

depois outra coisa estranha é sempre que execute ele a primeira vez cria sempre uma bd e não devia acontecer...

e se procurar no pc não encontro bd em lado nenhum...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

modifica isto 

Dim constr As String = "Data Source = 'login4.sdf'"

............................

Else

            MessageBox.Show("não existe")

            engine.CreateDatabase()

            engine.Dispose()

            MessageBox.Show("criou base de dados")

            con.Open()

            cmd.ExecuteNonQuery()

            con.Close()

        End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já alterei..

e tal como o código que tinha passou em tudo

nas messagebox criou tudo mas quando vou a listar para o datagrid nao aparece nada...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é exactamente igual...

executei o programa duas vezes e em cada uma delas criou uma base de dados...pelo menos pelas messagebox..

eu acho que não criou nenhuma

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o do grid está aqui:

DataGrid1.Visible = True

        Dim constr As String = "Data Source = login4.sdf"

        Dim con As New SqlCeConnection(constr)

        con.Open()

        Dim cmd As New SqlCeCommand("Select * from teste", con)

        Dim da As New SqlCeDataAdapter(cmd)

        cmd.ExecuteNonQuery()

        Dim ds As New DataSet

        da.Fill(ds)

        DataGrid1.DataSource = ds

        DataGrid1.ColumnHeadersVisible = True

        DataGrid1.RowHeadersVisible = True

        DataGrid1.Show()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ainda não testei no pda...

só teste no emulador do smart device...

Um emulador?!

E, se adicionares esse *.sdf ao emulador através da opção ADD --> EXISTING ITEM (usar o botão direito do rato em cima do nome do projecto) e, nas PROPRIEDADES desse ficheiro verificas se tens estas propriedades:

- BUILD ACTION: CONTENT

- COPY OUTPUT: COPY ALWAYS

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

DataGrid1.DataSource = ds --a seguir a esta linha mete DataGrid1.Databind()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas essa linha da erro

datagrid1.databidings()

e joca no teu caso não percebi fui a projecto add Item mas depois nao tenho essas opções...

abre me uma janela do windows de procura..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

associaste as colunas da grid com  os campos que vai receber da tabela?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ola esquima,

não...

como faço para associar as colunas da grid com os campos que vai receber????

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora