Neste artigo vou mostrar como resetar o valor do campo definido como auto-increment em uma tabela do MySQL. |
Eu já mostrei como recuperar o ID do último registro inserido no MS Access, no SQL Server e no MySQL neste artigos :
Vamos agora resetar o valor do campo auto incremental em uma tabela do MySQL.
Então, como podemos resetar e alterar um valor de um campo definido como Auto Increment no MySQL ?
Pois é, se você não sabia, o MySQL fornece um recurso útil chamado auto-increment onde você pode atribuir o atributo de incremento automático para uma coluna de uma tabela para gerar uma identidade exclusiva para a nova linha.
Normalmente, você usa o atributo de incremento automático para a coluna de chave
primária da tabela.
Assim sempre que você inserir uma nova linha em uma tabela, o MySQL atribui
automaticamente um número de sequência para a coluna de auto-increment.
E, se um dia você precisar alterar esse valor pode fazer isso de diversas formas no MySql.
ALTER TABLE 'nome_tabela' AUTO_INCREMENT = novo_numero;
Neste caso o valor de novo_numero tem que ser igual ou maior que o valor máximo atual da coluna auto-increment.
TRUNCATE TABLE 'nome_tabela'
Esta instrução remove todos os dados da tabela e reseta o valor do campo auto-increment para zero.
DROP TABLE 'nome_tabela'
CREATE TABLE 'nome_tabela'(...)Essas instruções removem todos os dados da tabela, deleta a tabela e a recria resetando assim o valor do campo auto-increment para zero.
A seguir vou mostrar como fazer isso e vou usar o banco de dados Cadastro e a tabela alunos usados projeto criado no artigo :
Recursos usados:
Visual Studio Community 2015 (update 3)
MySql
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no Visual Studio 2015 Community
Abra o Visual Studio Community 2015 e clique em New Project;
Selecione Visual C# e o template Windows Forms Application.
Informe o nome Mysql_ResetID e clique no botão OK.
Instalando o pacote do MySQL Connector via Nuget
No menu Tools clique em Nuget Packet Manager e a seguir em Manage Nuget Packages for Solution;
Clique na guia Browse, informe MySQL connector e a seguir escolha o pacote do MySql.Data marcando o projeto para o qual deseja instalar e clique em Install;
Definindo a interface com o usuário no formulário Form1.cs
No formulário Form1.cs inclua 3 Labels, 3 TextBox, 1 GroupBox, dois Buttons e 1 DataGridView conforme o leiaute abaixo:
Implementando para resetar o valor do campo auto-increment
Neste exemplo eu estou usando um código bem simples no formulário apenas para mostrar o uso do recurso. Não estou fazendo validações nem tratando erros.
No formulário Form1.cs defina a string de conexão e um objeto MySqlConnection :
string _conexaoMySQL = "server=localhost;Uid=root;Pwd=******;Database=cadastro"; MySqlConnection con = null;
Para exibir os registros no DataGridView estou usando o método :
public DataTable SelecionaAlunos()
{
try
{
String sql = "SELECT * FROM alunos";
con = new MySqlConnection(_conexaoMySQL);
MySqlCommand cmd = new MySqlCommand(sql, con);
MySqlDataAdapter da = new MySqlDataAdapter();
da.SelectCommand = cmd;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
|
Estou carregando os dados no evento Load:
private void Form1_Load(object sender, EventArgs e)
{
dgvDados.DataSource = SelecionaAlunos();
}
|
Estou inserindo registros na tabela aluno usando o evento Click do botão Inserir :
private void btnInserir_Click(object sender, EventArgs e)
{
try
{
InserirAluno(txtNome.Text, txtEmail.Text);
dgvDados.DataSource = SelecionaAlunos();
}
catch (Exception ex)
{
MessageBox.Show("Erro :" + ex.Message);
}
}
|
No método InserirAluno() estou incluindo os dados na tabela:
public void InserirAluno(string _nome, string _email)
{
try
{
String sql = "INSERT INTO alunos (nome,email) VALUES (@nome,@email)";
con = new MySqlConnection(_conexaoMySQL);
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.Parameters.AddWithValue("@nome", _nome);
cmd.Parameters.AddWithValue("@email", _email);
con.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
}
}
|
Para realizar a tarefa de resetar o valor do campo auto-increment vamos definir o código abaixo no evento Click do botão Resetar:
private void btnResetar_Click(object sender, EventArgs e)
{
if (txtValorID.Text == string.Empty)
{
MessageBox.Show("Informe um valor válido");
}
else
{
MySqlCommand cmd = null;
try
{
// Cria o comando e a usa a instrução ALTER TABLE
cmd = new MySqlCommand(
"ALTER TABLE alunos AUTO_INCREMENT = " + Convert.ToInt32(txtValorID.Text), con);
// Executa o comando
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Campo auto-increment resetado com sucesso. ");
}
catch
{
throw;
}
finally
{
cmd.Dispose();
con.Close();
}
}
}
|
O código basicamente executa a instrução SQL : ALTER TABLE alunos AUTO_INCREMENT = " + Convert.ToInt32(txtValorID.Text)
Onde estamos alterando a tabela alunos e atribuindo o novo valor para o campo auto-increment.
Executando o projeto veremos os registros existentes exibidos no datagridivew. Vemos que o último ID atribuído tem o valor 6 e o próximo terá o valor 7.
Vamos definir um novo valor para o ID informando o número 9 e clicando no botão Resetar. Veja o resultado abaixo:
Agora, podemos incluir um novo valor, e, verificar que o valor do ID informado terá o valor 9 conforme esperado:
Pegue o projeto completo aqui : Mysql_ResetID.zip
Não se turbe o vosso coração; credes em
Deus, crede também em mim.
Na casa de meu Pai há muitas moradas; se não fosse assim, eu vo-lo teria dito.
Vou preparar-vos lugar.
João 14:1,2
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net
.NET - Dicas de site com livros gratuitos para estudo - Macoratti.net