Fórum Obter o id do registro incluído para uso na tabela relacionada no MySQL #425790
08/10/2012
0
Exemplo tenho uma tabela de vendas e uma de itensdavenda, na intensdavenda preciso inserir o id da venda, mas não sei como recupera-lo apos a inserção no banco, alguma dica, de como recuperar este valor, sou novo em .net, e preciso de ajuda.
Gilberto Santos.
Curtir tópico
+ 0Posts
08/10/2012
Tiago
int id=0;
Foreach(DataRow item in DataTable.Rows){
id=int.parse(item["id_venda"]);
}
dessa forma você guarda o valor da chave em uma váriavel.
Espero ter ajudado
Gostei + 0
09/10/2012
Alisson Santos
Gostei + 0
09/10/2012
Joel Rodrigues
Como você esta fazendo a inserção?
Gostei + 0
09/10/2012
Gilberto Santos.
Agradeço.
Gostei + 0
09/10/2012
Gilberto Santos.
Gostei + 0
10/10/2012
Alexsandro Trindade
Exemplo:
public Int64 SelecionarUltimoRegistroGravado()
{
try
{
const string sql = "SELECT LAST_INSERT_ID(campo_id_da_tabela) " +
"AS ID from nome_tabela " +
"order by campo_id_da_tabela desc limit 1";
Int64 ultimoregistro = 0;
var leitor = ConexaoBanco.Select(sql);
if (leitor.HasRows)
{
while (leitor.Read())
{
ultimoregistro = Convert.ToInt64(leitor["ID"]);
}
}
return ultimoregistro;
}
catch (Exception e)
{
throw new ArgumentException("Erro ao executar a solicitação - " + e.Message);
}
}
Espero ter ajudado!
Abraços.
Gostei + 0
10/10/2012
Alexsandro Trindade
Exemplo:
public Int64 SelecionarUltimoRegistroGravado()
{
try
{
const string sql = "SELECT LAST_INSERT_ID(campo_id_da_tabela) " +
"AS ID from nome_tabela " +
"order by campo_id_da_tabela desc limit 1";
Int64 ultimoregistro = 0;
var leitor = ConexaoBanco.Select(sql); //Select é um método da classe ConexaoBanco.
if (leitor.HasRows)
{
while (leitor.Read())
{
ultimoregistro = Convert.ToInt64(leitor["ID"]);
}
}
return ultimoregistro;
}
catch (Exception e)
{
throw new ArgumentException("Erro ao executar a solicitação - " + e.Message);
}
}
Espero ter ajudado!
Abraços.
Só lembrando que existe uma outra Classe chamada ConexaoBanco que faz o gerenciamento das conexões com o banco de dados.
Gostei + 0
10/10/2012
Tiago
Select nome_aluno as ALUNO
foreach(datarow linha in seudatatable.Rows){
STRING A =linha["ALUNO"].ToString();
}
Espero ter ajudado
Gostei + 0
10/10/2012
Gilberto Santos.
Como você esta fazendo a inserção?
Estou utilizando o entity framework, no qual criei uma classe, onde passo os valores para inserção direta na tabela, porem não tenho o retorno do id pois não sei como usar ou obter o retorno atravez de uma stored procedure.
Gostei + 0
10/10/2012
Gilberto Santos.
Porem estava esperando uma dica atravez do retorno de uma stored Procedure no MySQL, obtendo o valor do retorno, uma vez que da maneira que fiz os dados são registrados primeiro na tabela vendas, sendo assim quero obter o id(autoincremento) da tabela para de vendas para ai inserir os registros na tabela itensdavenda, normalmente mais de um item por venda.
Obrigado por enquanto..
Gostei + 0
11/10/2012
Geomar Canjundo
do que entendi do seu problema penso que você pode fazer o seguinte:
Cria um metodo, que retorno um inteiro que pega o maior valor cadastrado na tabela venda após a última inclusão:
private int (string campo, string tabela)
{ string sql = "SELECT MAX(" + campo + ") AS INDICE FROM " + tabela;
SqlCommand cmd = new SqlCommand(sql, conexao);
cmd.CommandType = CommandType.Text;
conexao.Open();
SqlDataReader dr = cmd.ExecuteReader();
int indice = 0;
if (dr.Read())
{
indice = int.Parse(dr["INDICE"].ToString());
}
conexao.Close();
return indice;
}
Esse metodo seria chamado logo após a inclusão e seria retorno do metod Insert da tabela Venda.
public int InserirVenda(VendaDTO dto)
{
string sql="sp_VENDA";
int codigo = 0;
SqlConnection conexao = this.ObterConexao();
SqlCommand cmd = new SqlCommand(sql, conexao);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@DESCRICAO", dto.PerDescricao);
try
{
conexao.Open();
cmd.ExecuteNonQuery();
codigo = ObterCodigoActual("PER_CODIGO", "ACA_PERIODO");
}catch(Exception ex)
{
codigo=-1;
}finally
{
conexao.Close();
}
return codigo;
}
Espero ter ajudado.
Geomar Canjundo
Gostei + 0
15/10/2012
Valter Furtado
Na SP que você insere o registro faça no fim isso que foi citado acima,
SELECT LAST_INSERT_ID(campo_id_da_tabela) AS ID from nome_tabela order by campo_id_da_tabela desc limit 1;
Colocando em uma variável ou colocando somente isso no fim, e no método dentro da classe use um ExecuteScalar() assim você tem o seu ID do ultimo registro cadastrado.
Não tenho como testar isso aqui mas acredito que funcione.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)