GCN.GETOLEDBSCHEMATABLE

DJHASSELMANN 16/12/2024 12:02:47
#503683
Bom dia a todos do fórum!

Estava utilizando a conecção com o Access onde era possivel criar tabelas utilizando a instrução dataTable = gCN.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Restricoes). Mas agora estou utilizando MySQL Workbench
e gostaria de saber qual instrução utilizar a qual realize a mesma tarefa?
A quem puder ajudar, agradeço

Obrigado;
Dilson J. Hasselmann

FABRICIOWEB 16/12/2024 13:19:57
#503684
Nao seria isso?

// Configuração da conexão
string connectionString = "Server=localhost;Database=seu_banco_de_dados;User ID=seu_usuario;Password=sua_senha;";

using (MySqlConnection connection = new MySqlConnection(connectionString))
{
try
{
connection.Open();
Console.WriteLine("Conexão bem-sucedida!");

// Comando SQL para criar a tabela
string createTableQuery = @"
CREATE TABLE IF NOT EXISTS nova_tabela (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255) NOT NULL,
idade INT
);
";

using (MySqlCommand command = new MySqlCommand(createTableQuery, connection))
{
command.ExecuteNonQuery();
Console.WriteLine("Tabela criada com sucesso!");
}
}
catch (Exception ex)
{
Console.WriteLine($"Erro: {ex.Message}");
}
}
}
DJHASSELMANN 16/12/2024 14:18:23
#503685
Oi Boa tarde,

Não é bem isso, o que estou querendo é o que fazia para o ACCESS no vb. utilizando OleDB... só que no MySQL bom segue abaixo parte do código utilizado até então

                    gMensagem = "Procurando Tabela Temporaria"
dataTable = gCN.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Restricoes)

I = dataTable.Rows.Count - 1

If I > -1 Then
ReDim NomeTabelas1(I)
For I = 0 To dataTable.Rows.Count - 1
NomeTabelas1(I) = dataTable.Rows(I).Item("TABLE_NAME").ToString()
If NomeTabelas1(I) = "tbTMPIMP_1" Then
gSQL = "DROP TABLE tbTMPIMP_1"
gCMD = New OleDbCommand(gSQL, gCN)
gCMD.ExecuteNonQuery()
Exit For
End If
Next
End If

gMensagem = "Criando Tabela Temporaria para Impressão 1"
gSQL = "SELECT * INTO tbTMPIMP_1 FROM " & lTabela & " Where 1 = 0" 'Cria Tabela Temporaria
gCMD = New OleDbCommand(gSQL, gCN)
gCMD.ExecuteNonQuery()


Aqui verifico se o BD está povoado (se possui tabelas) ou não, se estiver povoado, uso o For Next para coletar os nomes das tabelas para um Array (NomeTabelas) e logo após verifico se o nome data Tabela já existe no BD, se existir Excluo do BD e logo em seguida Crio uma tabela com a mesma estrutura (somente estrutura Where=0) da Tabela contida na variavel lTabela. Bom como já falado quero saber se é possivel e quais instruções utilizar para o MySQL, mais uma vez obrigado!


DJHASSELMANN 18/12/2024 20:14:29
#503694
Oi, e ai ninguem pra ajudar ou dar uma de bom samaritano?
FABRICIOWEB 19/12/2024 00:29:40
#503696
Dim gMensagem As String
Dim gCN As New MySqlConnection("Server=localhost;Database=seu_banco;Uid=seu_usuario;Pwd=sua_senha;")
Dim gCMD As MySqlCommand
Dim gSQL As String
Dim lTabela As String = "nome_da_tabela_original" ' Substitua pelo nome da tabela de origem

Try
' Abrir a conexão
gCN.Open()

gMensagem = "Procurando Tabela Temporária"
gSQL = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'tbTMPIMP_1'"
gCMD = New MySqlCommand(gSQL, gCN)
Dim tabelaExiste As Integer = Convert.ToInt32(gCMD.ExecuteScalar())

If tabelaExiste > 0 Then
gMensagem = "Tabela Temporária encontrada. Excluindo..."
gSQL = "DROP TABLE tbTMPIMP_1"
gCMD = New MySqlCommand(gSQL, gCN)
gCMD.ExecuteNonQuery()
End If

gMensagem = "Criando Tabela Temporária para Impressão 1"
gSQL = $"CREATE TABLE tbTMPIMP_1 AS SELECT * FROM {lTabela} WHERE 1 = 0"
gCMD = New MySqlCommand(gSQL, gCN)
gCMD.ExecuteNonQuery()

gMensagem = "Tabela Temporária criada com sucesso"
Catch ex As Exception
Console.WriteLine("Erro: " & ex.Message)
Finally
' Fechar a conexão
If gCN.State = ConnectionState.Open Then
gCN.Close()
End If
End Try
DJHASSELMANN 19/12/2024 09:34:10
#503697
Valeu FabricioWEB, muito obrigado!

Funcionou legal !


FABRICIOWEB 19/12/2024 10:04:12
#503698
finalize o topico vlww
DJHASSELMANN 19/12/2024 17:17:34
#503700
FabricioWeb

Após varias pesquisas encontrei a sintaxe correta MySQL para o VB.NET

gSQL = "CREATE TABLE NomedoBancodeDados.NomedaNovaTabela AS select * from NomedoBancodeDados.NomedaTabeladeOrigem where 1 = 0"

Mais uma vez obrigado, espero que ajude mais pessoas com a mesma dúvida!
Tópico encerrado , respostas não são mais permitidas