Quando fiz isso, lembro que segui no ajuda do MT5 e funcionou perfeitamente.
Olhando o seu código verifiquei que vc cria a tabela e fecha ela, após fechar vc insere os dados...acho que vc nao pode fechar a tabela se for querer inserir algum dado, verifique isso...só feche a tabela após inserir os dados, ou senão antes de inserir abra.
Pois o comando de abrir o banco de dados tem as opções de somente leitura, leitura/gravação...como nessas linhas que vc colou não aparece como vc está abrindo o arquivo, o problema deve ser isso
int db=DatabaseOpen(filename, DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE);
realmente eu tinha entendido errado o codigo, mas só fecha a tabela em caso de erro, vc está certo.
Outra coisa que acabei de ver é que vc tem 6 parametros e está passando 5 valores
ID, bid_unit, volume_bid_unit, ask_unit, volume_ask_unit, rentabilidade_compra_unit) VALUES (1','2','3','5,'6);"
Bem provavel que seja isso, pq vc nao criou nada auto incremento, então tem que passar todos os valores
Descobri o erro. Eram 2 na verdade, além da quantidade de itens, faltou coloca-los todos com sinal de '. O código ficou assim:
//--- criamos a tabela do ativo if(!DatabaseExecute(db, "CREATE TABLE TAEE11F(" "ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," "bid_unit REAL NOT NULL," "volume_bid_unit REAL NOT NULL," "ask_unit REAL NOT NULL," "volume_ask_unit REAL NOT NULL," "rentabilidade_compra_unit REAL NOT NULL);")) { Print("DB: ", filename, " create table failed with code ", GetLastError()); DatabaseClose(db); return; } //--- insere dados na tabela //string ativo = "TAEE11F"; if(!DatabaseExecute(db, "INSERT INTO TAEE11F " "(bid_unit, volume_bid_unit, ask_unit, volume_ask_unit, rentabilidade_compra_unit)" "VALUES ('1','2','3','4','5');"))
Segui sua sugestão e coloquei o ID como Autoincrement. Vou tentar agora inserir algumas variável na tabela. Você sabe me dizer se preciso primeiro criar um string com o comando SQL que quero executar ou tem alguma forma mais fácil?
Deu certo!!!
//--- insere dados na tabela string ativo = "TAEE11F"; double bid_unit = 1.00; double volume_bid_unit = 100; double ask_unit = 1.00; double volume_ask_unit = 100; double rentabilidade_compra_unit = 0.78; string insere_cotacao = "INSERT INTO "+ativo+" " "(bid_unit, volume_bid_unit, ask_unit, volume_ask_unit, rentabilidade_compra_unit)" "VALUES ('"+bid_unit+"','"+volume_bid_unit+"','"+ask_unit+"','"+volume_ask_unit+"','"+rentabilidade_compra_unit+"');"; if(!DatabaseExecute(db, insere_cotacao)) { Print("DB: ", filename, " insert failed with code ", GetLastError()); DatabaseClose(db); return; }
Boa garoto!!
Eu sabia que vc conseguiria rsrs!!

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Estou testando o sqlite seguindo o artigo https://www.mql5.com/pt/articles/7463, mas estou recebendo o erro "INSERT FAILED WITH CODE 5601 ". Sei que tem algum erro com a linha que insere dados, mas já estou a dois dias procurando o erro. Procurei na internet outros exemplos, li a documentação, mas não encontrei onde está o erro. Alguém pode, por gentileza, me indicar o problema ou me passar um exemplo de como resolver?