VERIFICAR E CRIAR BANCO/TABLELA/CAMPO
Boa noite pessoal!
Bom, venho aqui pedir a ajuda de todos para o seguinte problema, esses dias me deparei com uma situação, eu fiz a atualização no cliente, mas eu me esqueci que nessa atualização eu deveria ter incluido 2 campos na tabela do banco de dados, resumindo, tive que voltar lá, e incluir, mas tudo bem. Mas a questão é a seguinte, para isso não acontecer, estava pensando se teria algum modo de eu estar verificando se existe aquele banco, se nao criar, se já existe a tabela naquele banco, se não criar, verificar se existe os campos naquela tabela, se não, criar. Eu estava procurando por aÃ, o que encontrei foi tipo de um script, até notei que o backup do mysql é assim, mas não sei como usá-lo no vb, será que alguém pode me dar uma luz? Obrigado desde já, um abraço!!!
Bom, venho aqui pedir a ajuda de todos para o seguinte problema, esses dias me deparei com uma situação, eu fiz a atualização no cliente, mas eu me esqueci que nessa atualização eu deveria ter incluido 2 campos na tabela do banco de dados, resumindo, tive que voltar lá, e incluir, mas tudo bem. Mas a questão é a seguinte, para isso não acontecer, estava pensando se teria algum modo de eu estar verificando se existe aquele banco, se nao criar, se já existe a tabela naquele banco, se não criar, verificar se existe os campos naquela tabela, se não, criar. Eu estava procurando por aÃ, o que encontrei foi tipo de um script, até notei que o backup do mysql é assim, mas não sei como usá-lo no vb, será que alguém pode me dar uma luz? Obrigado desde já, um abraço!!!
já pesquisou no google por [txt-color=#e80000]visual basic mysql create table[/txt-color] e [txt-color=#e80000]visual basic mysql alter table[/txt-color]?
Sim cara, como disse, eu encontrei e todos que encontrei foi um comanto sql, só que não consegui implementar no vb
Adilsoo como você faz a consulta no banco ou insere os dados posta ai pragente, que te explico como funciona pra adicionar a tabela campos, etc.
Bom, seria assim...
sSQL = [Ô][Ô]SELECT tabela FROM banco WHERE campo = '[Ô]& critério &[Ô]'[Ô]
Set rs = Conexao.Execute (sSQL)
sSQL = [Ô][Ô]SELECT tabela FROM banco WHERE campo = '[Ô]& critério &[Ô]'[Ô]
Set rs = Conexao.Execute (sSQL)
então colega veja como é dificil
vou criar uma tabela no banco de dados com alguns campos
entendeu agora para você criar, se parte do mesmo principio de consultar, inserir, deletar
outro exemplo:
vou criar um campo em uma tabela já existente, acima criei a tabela toda agora vou criar apenas o campo(coluna)
acima criei um campo idade na tabela aluno, dificil né.
e assim segue agora veja a documentação mysql ficará claro como poderá proceder
vou criar uma tabela no banco de dados com alguns campos
conexao.Execute [Ô]CREATE TABLE IF NOT EXISTS tabela_nova (campo_nome VARCHAR(20), campo_endereco VARCHAR(500), campo_cidade VARCHAR(100), campo_dataNasc date)[Ô]
entendeu agora para você criar, se parte do mesmo principio de consultar, inserir, deletar
outro exemplo:
vou criar um campo em uma tabela já existente, acima criei a tabela toda agora vou criar apenas o campo(coluna)
conexao.Execute [Ô]ALTER TABLE aluno ADD idade int(11)[Ô]
acima criei um campo idade na tabela aluno, dificil né.
e assim segue agora veja a documentação mysql ficará claro como poderá proceder
Agora consegui, valeu!
Mas ficou uma dúvida, os campos eu não consegui verificar se existe antes de mandar criar, a tabela deu certo...
Estou fazendo assim...
Mas ficou uma dúvida, os campos eu não consegui verificar se existe antes de mandar criar, a tabela deu certo...
Estou fazendo assim...
sSQL = [Ô]ALTER TABLE IF NOT EXISTS teste ADD idade int(11)[Ô]
Conexao.Execute (sSQL)
Para os campos não existe o [IF NOT EXIST] ou seja ALTER TABLE não usa o IF NOT EXIST você tera criar uma função, ou verificar de outra forma
uma alternativa é preencher um array com os campos da tabela comparar com o novo campo que você quer inserir, seria algo mais ou menos assim
no exemplo acima os campos serão colocados em um listbox, basta você criar uma array pra depois comparar com os campos que irá inserir.
uma alternativa é preencher um array com os campos da tabela comparar com o novo campo que você quer inserir, seria algo mais ou menos assim
Dim rs As Recordset
Dim fld As Field
Set rs = Conexao.Execute([Ô]select * from sua_tabela[Ô])
For Each fld In rs.Fields
List2.AddItem fld.Name
Next
no exemplo acima os campos serão colocados em um listbox, basta você criar uma array pra depois comparar com os campos que irá inserir.
Adilson,
Segue script de verificação de campos com o alter table:
é só implementar esse script no vb para ser executado.
Obs.:
Na tabela SYS.ALL_OBJECTS, estão todas as tabelas do seu banco.
Na tabela SYS.ALL_COLUMNS, estão todos os campos de suas tabelas.
No caso acima eu coloquei para pesquisar onde a tabela é igual a [ô]PROPOSTAS[ô] e o campo é igual a [ô]TESTE[ô]
Segue script de verificação de campos com o alter table:
IF NOT EXISTS ( SELECT
OBJ.NAME, COL.NAME
FROM
SYS.ALL_OBJECTS OBJ
INNER JOIN SYS.ALL_COLUMNS COL ON
COL.OBJECT_ID = OBJ.OBJECT_ID
WHERE
OBJ.NAME = [ô]PROPOSTAS[ô]
AND COL.NAME = [ô]TESTE[ô]
)
BEGIN
ALTER TABLE PROPOSTAS ADD
TESTE INT NULL
END
é só implementar esse script no vb para ser executado.
Obs.:
Na tabela SYS.ALL_OBJECTS, estão todas as tabelas do seu banco.
Na tabela SYS.ALL_COLUMNS, estão todos os campos de suas tabelas.
No caso acima eu coloquei para pesquisar onde a tabela é igual a [ô]PROPOSTAS[ô] e o campo é igual a [ô]TESTE[ô]
Amigo, pelo que eu entendi, eu preciso gravar as tabelas e campos no próprio banco, e eu não estava querendo depender do banco em si para isso, pois eu quero que quando eu instalar o sistema, quero que seja criado todas as tabelas e campos necessários, pensei em fazer o seguinte, criar um arquivo INI e colocar todas as tabelas e campos nesse INI, quando houver alguma alteração na base de dados, eu envio junto com a atualização para o cliente o arquivo INI, quando o sistema inicializar pela próxima vez, já criará todos as tabelas e campos necessários. Até aà já está definido, agora vou ver a melhor maneira para se fazer isso...
tu pode adaptar a dica do marcelo treze e adicionar os campos em um array para comparar com os campos da tabela
Dim rs As Recordset
Dim fld As Field
Dim existe as Boolean = False
Dim nomecampos() As String = {[Ô]campo1[Ô], [Ô]campo2[Ô], [Ô]campo3[Ô]}
Dim cadacampo As String
Set rs = Conexao.Execute([Ô]select * from sua_tabela[Ô])
For Each fld In rs.Fields
For Each cadacampo In nomecampo
If cadacampo = rs.Fields.Name Then
existe = True
End If
Next
If existe = False Then
comando para inserir o campo
End If
Next
Tópico encerrado , respostas não são mais permitidas