1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[C#] Enviar informação para base de dados

Discussão em 'Programação' iniciada por orien, 27 de Outubro de 2008. (Respostas: 7; Visualizações: 1412)

  1. orien

    orien [email protected] Member

    Boas pessoal tou a desenvolver um jogo e tou com um problema na parte em que mando os resultados para a base de dados que esta num hosting. eu ja consegui fazer a ligaçao ao hosting mas agora nao sei como mandar informaçao para a base de dados.... por exemplo o resultado que o jogador fez.. alguem me pode ajudar?

    ahh estou a usar isto...

    using
    MySql.Data.MySqlClient;

    obrigado
     
    Última edição: 27 de Outubro de 2008
  2. orien

    orien [email protected] Member

    Código:
    [/COLOR][/SIZE]
    [SIZE=2][COLOR=#0000ff]string[SIZE=2] query = [/SIZE][SIZE=2][COLOR=#a31515]"INSERT INTO `jogo` ( `nome` , `resultado` ) VALUES ('Hugo', '21');"[/COLOR][/SIZE][SIZE=2];
    conn.Open();
    cmd = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#2b91af]MySqlCommand[/COLOR][/SIZE][SIZE=2](query, conn);
    conn.Close();
    [/SIZE]

    Código:
     
    MySqlCommand cmd = new MySqlCommand(ler, conn);
    
    ler = a um comando sem grande importancia...
    conn = a uma string com a conection para a base de dados...

    agora e o seguinte quando executo o 1o codigo nao acontece absolutamente nada :S

    alguma opiniao? ou ajuda?

    Obrigado
     
  3. alfinete

    alfinete Power Member

    Código:
    
    private str_ligacao As String = "data source=(local);initial catalog=Requisicoes;integrated security=SSPI;persist security info=True"
    

    Código:
    
     Dim ligacao As SqlConnection = New SqlConnection(str_ligacao)
            'Comando sql que insere cada campo preenchido na respectiva BD      
            Dim comando As New SqlCommand("Insert into TabUtilizador (Login," & _
                                        " Nome, Password, [E-mail], Previlegios)" & _
                                        " values (@login, @nome, @senha,@mail, @previlegios)", ligacao)
            'Adiciona valores em cada na respectivo campo da bd
            comando.Parameters.Add(New SqlParameter("@login", Me.TxtBox_user.Text))
            comando.Parameters.Add(New SqlParameter("@nome", Me.TxtBox_Nome.Text))
            comando.Parameters.Add(New SqlParameter("@senha", GeraHash(Me.TxtBox_pass.Text)))
            comando.Parameters.Add(New SqlParameter("@mail", Me.TxtBox_Mail.Text))
            comando.Parameters.Add(New SqlParameter("@previlegios", prev_sel))
            ligacao.Open()
            Me.lbl_Status.Visible = True
            If comando.ExecuteNonQuery = 1 Then
                'Me.lbl_Status.Text = "O Utilizador " & Me.TxtBox_user.Text & " foi registado com sucesso."
                'Response.Redirect("http://localhost:8080/site/Inserir_Utilizadores.aspx")
            Else
                Me.lbl_Status.Text = " Erro na interligação de dados. Por favor tente mais tarde."
            End If
            lbl_Status.Visible = True
            ligacao.Close()
            comando.Dispose()
    
    
    tens aqui uma solução em vb para gravar dados na bd

    e aqui uma ferramenta de conversão de vb em c# e viceversa

    http://www.developerfusion.com/tools/convert/csharp-to-vb/

    espero que ajuda

    em c# tb tenho mas com classes criadas as quais não posso arranjar
     
  4. alfinete

    alfinete Power Member

    gerahash - é um metodo de emcriptação

    Código:
    
      Dim comando As New SqlCommand("Insert into TabUtilizador (Login," & _
                                        " Nome, Password, [E-mail], Previlegios)" & _
                                        " values (@login, @nome, @senha,@mail, @previlegios)", ligacao)
    
    
    nome dos campos da bd

    Código:
    (Login, Nome, Password, [E-mail], Previlegios)
    

    nome dos paremetros que escolhes para associares aos campos da bd
    Código:
    @login, @nome, @senha,@mail, @previlegios
    
    
    nota , a sequencia dos parametros tem de ser a mesma dos campos da bd


    atribuição de um valor a um parametro

    Código:
        comando.Parameters.Add(New SqlParameter("@login", Me.TxtBox_user.Text))
    
     
  5. geoblast

    geoblast Power Member

    Usa a classe SQL Helper, facilita a ligação (basta defini-la no web config) e protege-te do SQL injection.
     
  6. orien

    orien [email protected] Member

    Continuo sem nada na base de dados :S

    fiz o seguinte a partir do teu codigo...

    Código:
    [SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][SIZE=2] mysql = [/SIZE][SIZE=2][COLOR=#a31515]"Server = localhost; Database = jogo; Uid = root; Pwd = ;"[/COLOR][/SIZE][SIZE=2];[/SIZE]
    
    Código:
    [SIZE=2][COLOR=#0000ff]private[/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=2] button4_Click([/SIZE][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][SIZE=2] sender, [/SIZE][SIZE=2][COLOR=#2b91af]EventArgs[/COLOR][/SIZE][SIZE=2] e)[/SIZE]
    [SIZE=2]{[/SIZE]
     
    [SIZE=2]conn = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]MySqlConnection[/COLOR][/SIZE][SIZE=2](mysql); [/SIZE]
    [SIZE=2]conn.Open();[/SIZE]
    [SIZE=2][COLOR=#2b91af]MySqlCommand[/COLOR][/SIZE][SIZE=2] insert = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]MySqlCommand[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#a31515]"INSERT INTO `jogo`.`jogo` (`nome` ,`resultado` ,`dificuldade`)"[/COLOR][/SIZE][SIZE=2] + [/SIZE][SIZE=2][COLOR=#a31515]" VALUES (@nome, @resultado, @dificuldade)"[/COLOR][/SIZE][SIZE=2], conn); // A parte do Insert INTO tirei do phpmyadmin[/SIZE]
    [SIZE=2]insert.Parameters.Add([/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]MySqlParameter[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#a31515]"@nome"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][SIZE=2].textBox3.Text));[/SIZE]
    [SIZE=2]insert.Parameters.Add([/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]MySqlParameter[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#a31515]"@resultado"[/COLOR][/SIZE][SIZE=2], textBox4.Text));[/SIZE]
    [SIZE=2]insert.Parameters.Add([/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]MySqlParameter[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#a31515]"@dificuldade"[/COLOR][/SIZE][SIZE=2], textBox5.Text));[/SIZE]
    [SIZE=2]conn.Close();[/SIZE]
     
    [SIZE=2]}[/SIZE]
    
    eu ja consigo ir buscar a base de dados informação agora enviar e que nem por isso :(

    tambem me esqueci de dizer que tou a usar o wampserver para fazer testes porque depois tenho de redirecionar isto para o hosting na net
     
    Última edição: 28 de Outubro de 2008
  7. alfinete

    alfinete Power Member

    solução do problema

    foi testado em vb2005 por isso deve dar no vb2008

    Código:
    
      string ligacao_bd = "Initial Catalog=testeforms;Data Source=localhost;Integrated Security=SSPI;";
    
           
              SqlConnection ligacao  = new SqlConnection(ligacao_bd );
             
            //Comando sql que insere cada campo preenchido na respectiva BD      
            SqlCommand comando = new SqlCommand("insert into tabteste values(@nome)", ligacao);
            //Adiciona valores em cada na respectivo campo da bd
            comando.Parameters.Add(new SqlParameter("@nome", tbtxt.Text));
            ligacao.Open();
            if (comando.ExecuteNonQuery() == 1)
                lblerro.Text = "gravado com sucesso";
            else
                lblerro.Text = "Erro na interligação de dados. Por favor tente mais tarde";
            ligacao.Close();
            comando.Dispose();
    
    
    o teu não gravava , primeiro pq não fazias o executenomquery(), pois este comando server para fazeres inserts, updates e deletes.

    tens o executedataset, datatable,datarow, etc para fazeres selects.

    regras de uma ligação bd sql .net

    abrir a coneção o mais terde possivel e fechar o mais cedo possivel depois da abrir, fazer sempre um dispose para limpar a memoria da ligação


    comando.ExecuteNonQuery() quando grava correctamente devolve 1 caso contrario devolve o

    espero que agora consigas
     
  8. orien

    orien [email protected] Member

    Muito obrigado :D está a funcionar!!! =DD
     

Partilhar esta Página