Pegar dados no Banco pelo ID - MySql - Asp.Net

Olá Pessoa,

Tenho a Minha Aplicação de tarefas, com o seguinte Banco:

CREATE TABLE `tarefas` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nometarefa` varchar(50) NOT NULL DEFAULT '', `dataentrega` varchar(50) NOT NULL DEFAULT '', `imagem` blob, `descricaotarefa` varchar(400) NOT NULL DEFAULT '', `comentario` varchar(350) DEFAULT NULL, `status` binary(1) NOT NULL DEFAULT '\0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
Ai Tenho uma tela para Cadastrar estes Dados, o que ocorre sem problemas.

Porém eu gostaria de puxar estes dados para Editar,Excluir e Buscar.

Eu consigo puxar os dados utilizando o campo “nometarefa”, mas como não descrevi o ID nos parametros eu não sei Fazer isso.

Deem uma Olhada:

[code]protected void btnEditar_Click(object sender, EventArgs e)
{
// define a string de conexão
string strConnection = “Server=localhost;Database=donaceleste;Uid=DonaCeleste;Pwd=XXXXXXX;”;
//cria a conexão com o banco de dados
MySqlConnection dbConnection = new MySqlConnection(strConnection);
//cria um comando
MySqlCommand cmdQry = dbConnection.CreateCommand();

        //Instrução SQL com parâmetros

        //ESTA EDITANDO PERFEITAMENTE, MAS LEVANDO EM CONSIDERAÇÃO O NOME DA TAREFA, PORTANTO A UNICA COISA QUE NÃO EDITA É O NOME DA TAREFA, POIS ELA É O ID DA CONEXAO
        cmdQry.CommandText = "UPDATE tarefas SET dataentrega = @dataentrega, imagem = @imagem, descricaotarefa = @descricaotarefa, comentario = @comentario, status = @status WHERE nometarefa = @nometarefa;";

        // definindo os parâmetro: nome , tipo de dados e tamanho
        cmdQry.Parameters.Add("@nometarefa", MySqlDbType.VarChar, 50);
        cmdQry.Parameters.Add("@dataentrega", MySqlDbType.VarChar, 50);
        cmdQry.Parameters.Add("@imagem", MySqlDbType.TinyBlob);
        cmdQry.Parameters.Add("@descricaotarefa", MySqlDbType.VarChar, 400);
        cmdQry.Parameters.Add("@comentario", MySqlDbType.VarChar, 350);
        cmdQry.Parameters.Add("@status", MySqlDbType.Bit);

        //atribuindo valores aos parâmetros
        cmdQry.Parameters["@nometarefa"].Value = txtNomeTarefa.Text;
        cmdQry.Parameters["@dataentrega"].Value = txtDataEntregaTarefa.Text;
        cmdQry.Parameters["@imagem"].Value = uploadImagem.FileBytes;
        cmdQry.Parameters["@descricaotarefa"].Value = txtDescricaoDaTarefa.Text;
        cmdQry.Parameters["@comentario"].Value = txtComentario.Text;
        cmdQry.Parameters["@status"].Value = rblStatus.Text;
        try
        {
            // abre o banco
            dbConnection.Open();
            // executa a query
            cmdQry.ExecuteNonQuery();

            Response.Write("<script language=javascript>");
            Response.Write("alert('Dados Salvos com sucesso.')");
            Response.Write("</script>");
        }
        //Trata a exceção
        catch (Exception ex)
        {
            Response.Write("Error: " + ex.Message);
        }
        finally
        {
            //fecha a conexao
            dbConnection.Close();
        }
    }[/code]

[color=red][size=18]Como eu Faço para puxar e Editar os Campos via ID como a minha query declarada assim:[/color] [/size]cmdQry.CommandText = "UPDATE tarefas SET nometarefa = @nometarefa, dataentrega = @dataentrega, imagem = @imagem, descricaotarefa = @descricaotarefa, comentario = @comentario, status = @status WHERE id = @id ;";

Fala, viny_scholl, beleza?

Vamos lá: você tá desenvolvendo com WebForms ou MVC?

Como você está desenvovelndo com WebForms:

  1. Para editar: na sua página .aspx, você pode fazer uso de um HiddenField ou de uma Session para guardar o valor do ID do objeto. Se você passa o valor do ID pela URL, você pega através do objeto Request.

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // guardando em um HiddenField na página .aspx hiddenfieldID.Value = Convert.ToString(Request.Params["ID"])); // guardando em uma Session Session["objetoID"] = Request.Params["ID"]; } }

  1. Para excluir: você, provavelmente, usa uma GridView para exibir os dados e coloca um botão para excluir nela, correto? Você pode adicionar um TemplateField com um LinkButton e, na propriedade CommandArgument desse LinkButton, guardar o valor do ID:
<asp:GridView runat="server" ID="gridviewDados">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:LinkButton runat="server" ID="linkbuttonExcluir" CommandArgument="<% #bind('ID') %>"
                    OnClick="linkbuttonExcluir_Click" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

// no code behind:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        gridviewDados.DataSource = ObjetoDAO.BuscarTodos();
        gridviewDados.DataBind();
    }
}
protected void linkbuttonExcluir_Click(object sender, EventArgs e)
{
    // recupero o ID da propriedade CommandArgument do LinkButton e faço uso dele.
    long objetoID = Convert.ToInt64((sender as LinkButton).CommandArgument);
    ObjetoDAO.Excluir(objetoID);
}

Agora…
Se resolver usar o ASP.NET MVC (recomendo fortemente):

Você pode fazer um LinkButton com um HTML Action ligado a este, passando o ID como parâmetro.

<table>
<tbody>
@foreach (var dado in @ViewBag.Dados)
{ 
    <tr>
      <td>@dado.Nome</td>
      <td><a href="@Html.Action('MetodoExcluir', 'Controller', new { id = @dado.ID})" />Excluir</a>
    </tr>
}
</tbody>
</table>

Claro, no seu Controller, você deve preencher a variável dinâmica Dados com os valores que você exibirá na tela passíveis de edição/exclusão.

Espero ter ajudado,
fique com Deus! :smiley:

creio que sei qual sua dúvida…

há 2 maneiras que vejo por hora.

1 - antes de Editar, você precisa Carregar Todas as Tarefas para que o usuário selecione uma e então peça para editar, quando for para edição você envia o ID dessa tarefa pela URL para uma página de edição especifica.

2 - você também pode colocar um formulario, onde o usuário insere o id da tarefa, quando o campo perde o foco, as informações da tarefa aparecem só que com campos desabilitados…você pode colocar um botão Editar…que ativa tais campos para edição e um botão salvar, você pega o valor dos Edts e da o update de acordo com o id

da forma que passei é bem básico, mas acredito que te atenda…por hora…