Pergunta

Estou tentando usar o System.data.sqlite Library e estou seguindo a documentação sobre otimizar inserções, por isso copiei este código diretamente para fora da documentação:

  using (SQLiteTransaction mytransaction = myconnection.BeginTransaction())
  {
    using (SQLiteCommand mycommand = new SQLiteCommand(myconnection))
    {
      SQLiteParameter myparam = new SQLiteParameter();
      int n;

      mycommand.CommandText = "INSERT INTO [MyTable] ([MyId]) VALUES(?)";
      mycommand.Parameters.Add(myparam);

      for (n = 0; n < 100000; n ++)
      {
        myparam.Value = n + 1;
        mycommand.ExecuteNonQuery();
      }
    }
    mytransaction.Commit();
  } 

Agora, eu inicializo a conexão antes disso usando

SqlConnection myconnection = new SqlConnection("Data Source=blah");

Eu tenho um banco de dados chamado blá, com as tabelas e valores corretos.

O problema é quando eu executo este código, ele diz que "a operação não é válida devido ao estado atual do objeto"

Eu tentei alterar o código várias vezes e ainda aponta para iniciar a transação. O que da?

Foi útil?

Solução

Você pode ter declarado e instanciado a conexão, mas você a abriu?

A primeira coisa que eu tentaria é remover o material da transação e ver se o código realmente funciona - veja o que isso diz ...

Martin

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top