locked
Não consigo inserir dados na tabela. RRS feed

  • Pergunta

  • Olá estou tentando inserir dados na tabela mas não consigo. Segue abaixo o código, onde está o erro?

     

    private void button1_Click(Object sender, System.EventArgs e)

    {

    SqlConnection mySQLCon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\DBTeste.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

    SqlCommand mySQLCom = mySQLCon.CreateCommand();

    mySQLCom.set_CommandText("Insert Into TbTeste (login, senha) Values ('ryan',123456')");

    mySQLCon.Open();

    mySQLCom.ExecuteNonQuery();

    mySQLCon.Close();

    }

     

    Obrigado.

    terça-feira, 5 de junho de 2007 19:27

Respostas

  • Oi !

     

    O problema está na sua string de conexão. Essa string de conexão, tipicamente utilizada em ambiente web, causa muita confusão no ambiente windows, frequentemente dando a impressão de que a gravação não está acontecendo.

     

    1) Baixe o sql management studio express no site da microsoft

     

    2) Pelo sql management studio express faça um attach do banco dbteste.mdf no seu sql server express

     

    3) mude a string de conexão : "Data Source=.\\SQLEXPRESS;Initial Catalog=DBTeste;Integrated Security=True;Connect Timeout=30"

     

    []'s

     

     

    terça-feira, 5 de junho de 2007 22:58
  • Oi !

     

    Confira essa linha : mySQLCon.set_ConnectionString(System.Configuration.ConfigurationSettings.get_AppSettings().get_Item("connectionString"));

     

    Fazendo até mesmo um messageBox.show e um passo a passo. É fato que ele não está conseguindo recuperar a connectionstring.

     

    Depois marca a mensagem lá de cima como resposta...

     

    []'s

     

    quarta-feira, 6 de junho de 2007 18:00
  • Consegui! Código final!


    //Cria Variável universal mySQLCon
        SqlConnection mySQLCon;

        public void MetInsDt (String Valor1, String Valor2)       
        {
            //Cria mySQLCon e seta parametro de conexão
            mySQLCon = new SqlConnection(MyAppSettings.get_Default().get_connectionString());       
           
            //Abre conexão
            mySQLCon.Open();

            //Cria Comando, assigna Con para Com e passa StrComando
            SqlCommand mySQLCom = new SqlCommand();
            mySQLCom.set_Connection(mySQLCon);
            mySQLCom.set_CommandText("INSERT INTO TbTeste (nome, sobrenome) VALUES (@Valor1, @Valor2)");
            mySQLCom.get_Parameters().AddWithValue("@Valor1",Valor1);
            mySQLCom.get_Parameters().AddWithValue("@Valor2", Valor2);       
           
            //Executa Comando
            mySQLCom.ExecuteNonQuery();

            //Fecha Conexão
            mySQLCon.Close();       
        }

        //Evento do Botão1 que envia dados para teste.
        private void button1_Click(Object sender, System.EventArgs e)
        {
            MetInsDt("Casebre", "Casebre2");
        }   

    quarta-feira, 6 de junho de 2007 21:29

Todas as Respostas

  • Oi !

     

    O problema está na sua string de conexão. Essa string de conexão, tipicamente utilizada em ambiente web, causa muita confusão no ambiente windows, frequentemente dando a impressão de que a gravação não está acontecendo.

     

    1) Baixe o sql management studio express no site da microsoft

     

    2) Pelo sql management studio express faça um attach do banco dbteste.mdf no seu sql server express

     

    3) mude a string de conexão : "Data Source=.\\SQLEXPRESS;Initial Catalog=DBTeste;Integrated Security=True;Connect Timeout=30"

     

    []'s

     

     

    terça-feira, 5 de junho de 2007 22:58
  • Nossa, muito obrigado pela sua ajuda! MUITO bem vindo Smile Fiz o que você falou e funcionou exatamente! Agora vai outra dúvida Smile Segue o código.

     

    //Cria Variável universal mySQLCon

    SqlConnection mySQLCon;

     

    //No Load do Form inicializa mySQLCon e depois passa ConnectionString

    private void Form1_Load(Object sender, System.EventArgs e)

    {

    mySQLCon = new SqlConnection();

    mySQLCon.set_ConnectionString(System.Configuration.ConfigurationSettings.get_AppSettings().get_Item("connectionString"));

    }

     

    //Evento do Botão1 que envia dados para teste.

    private void button1_Click(Object sender, System.EventArgs e)

    {

    SqlCommand mySQLCom = new SqlCommand();

    mySQLCom.set_Connection(mySQLCon);

    mySQLCom.set_CommandText("INSERT INTO TbTeste (Nome, Sobrenome) VALUES ('primeirnomeII','segundonomeII')");

    mySQLCon.Open();

    mySQLCom.ExecuteNonQuery();

    mySQLCon.Close();

    }

     

    Quando eu clico no botão da erro no mySQLCon.Open(); o programa diz: The ConnectionString property has not been initialized.

     

    Saberia dizer o porque? Abraços!

    quarta-feira, 6 de junho de 2007 15:07
  • Oi !

     

    Confira essa linha : mySQLCon.set_ConnectionString(System.Configuration.ConfigurationSettings.get_AppSettings().get_Item("connectionString"));

     

    Fazendo até mesmo um messageBox.show e um passo a passo. É fato que ele não está conseguindo recuperar a connectionstring.

     

    Depois marca a mensagem lá de cima como resposta...

     

    []'s

     

    quarta-feira, 6 de junho de 2007 18:00
  • Resolvi assim: Smile

    //Cria mySQLCon e seta parametro de conexão
    mySQLCon = new SqlConnection(MyAppSettings.get_Default().get_connectionString());

    Mas agora o problema é outro (denovo)! Dennes vc tem hotmail? Se tiver poderia passar por favor? Preciso muito de sua ajuda! Voltando ao problema :] Vê o código abaixo, ele está rodando beleza se não fosse o seguinte problema. Eu tenho um método chamado MetInsDt que recebe dois valores Strings Valor1 e Valor2. No exemplo são passados para o método os seguintes valores para as respectivas Strings "Casebre" e "Casebre2". Esse valores deveriam então ser passados o código SQL

    mySQLCom.set_CommandText("INSERT INTO TbTeste (login, senha) VALUES (Valor1, Valor2)");

    porém não vai, o que fazer?

    Código:

    //Cria Variável universal mySQLCon
    SqlConnection mySQLCon;

    public void MetInsDt (String Valor1, String Valor2) //"Casebre","Casebre2"
    {
    //Cria mySQLCon e seta parametro de conexão
    mySQLCon = new SqlConnection(MyAppSettings.get_Default().get_connectionString());

    //Abre conexão
    mySQLCon.Open();

    //Cria Comando, assigna Con para Com e passa StrComando
    SqlCommand mySQLCom = new SqlCommand();
    mySQLCom.set_Connection(mySQLCon);
    mySQLCom.set_CommandText("INSERT INTO TbTeste (login, senha) VALUES (Valor1, Valor2)"); //Problema aqui. Valor1 e Valor2 são passados como Casebre, Casebre2 quando deveriam ser 'Casebre', Casebre2' [SQL].

    //Executa Comando
    mySQLCom.ExecuteNonQuery();

    //Fecha Conexão
    mySQLCon.Close();
    }

    //Evento do Botão1 que envia dados para teste.
    private void button1_Click(Object sender, System.EventArgs e)
    {
    MetInsDt("Casebre", "Casebre2"); //Valores passados.
    }

    quarta-feira, 6 de junho de 2007 20:23
  • Consegui! Código final!


    //Cria Variável universal mySQLCon
        SqlConnection mySQLCon;

        public void MetInsDt (String Valor1, String Valor2)       
        {
            //Cria mySQLCon e seta parametro de conexão
            mySQLCon = new SqlConnection(MyAppSettings.get_Default().get_connectionString());       
           
            //Abre conexão
            mySQLCon.Open();

            //Cria Comando, assigna Con para Com e passa StrComando
            SqlCommand mySQLCom = new SqlCommand();
            mySQLCom.set_Connection(mySQLCon);
            mySQLCom.set_CommandText("INSERT INTO TbTeste (nome, sobrenome) VALUES (@Valor1, @Valor2)");
            mySQLCom.get_Parameters().AddWithValue("@Valor1",Valor1);
            mySQLCom.get_Parameters().AddWithValue("@Valor2", Valor2);       
           
            //Executa Comando
            mySQLCom.ExecuteNonQuery();

            //Fecha Conexão
            mySQLCon.Close();       
        }

        //Evento do Botão1 que envia dados para teste.
        private void button1_Click(Object sender, System.EventArgs e)
        {
            MetInsDt("Casebre", "Casebre2");
        }   

    quarta-feira, 6 de junho de 2007 21:29