Erro ao tentar inserir na tabela sqlite

Ola Pessoal GUJ ,

Sou iniciante em java e estou tendo dificuldade para inserir dados em uma tabela (Deve ser problema de syntax)

Segue codigo abaixo:

Codigo instancio a classe que conecta com o banco de dados

DBConnection db = new DBConnection("controle_estoque.db");
db.initDB();
db.addProduto("0001","Doce de Banana","2.00","1.00","10","1");
} catch (Exception e) {
			e.printStackTrace();
		}

Trecho do Codigo da classe DBConection

import java.sql.*;
import java.util.Vector;

public class DBConnection {
	private Connection conn;
	private Statement stm;
	
	/**
	 * O construtor cria uma nova conexão com o banco de dados sqlite contido
	 * no arquivo passado como parâmetro. A conexão é possibilitada pelo driver
	 * JDBC, fornecido por SQLiteJDBC.
	 */
	public DBConnection(String file) throws SQLException, ClassNotFoundException {
		Class.forName("org.sqlite.JDBC");
		this.conn = DriverManager.getConnection("jdbc:sqlite:" + file);
		this.stm = this.conn.createStatement();
	}
	
	/**
	 * Cria uma nova tabela de recordes, apagando tudo que houvesse na base
	 * anteriormente.
	 */
	public void initDB() {
		try {
			this.stm.executeUpdate("DROP TABLE IF EXISTS Produtos");
			this.stm.executeUpdate("CREATE TABLE Produtos (" + "Cod TEXT ," + "produtos TEXT ," + "preco TEXT ," + "comissao TEXT ," + "quantidade TEXT ," + "quantidade_minima TEXT );");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Adiciona uma nova linha na tabela de Produtos.
	
	 */
	 
	 
	public void addProduto(String codigo,String produto,String preco,String comissao,String quantidade,String quantidade_minima) {
		try {
			this.stm = this.conn.createStatement();

// NAS LINHAS ABAIXO ACONTECE O ERRO

			this.stm.executeUpdate("INSERT INTO Produtos VALUES (\"" + 
			codigo + "\"," + 
			produto + "\"," + 
			preco + "\"," + 
			comissao + "\"," + 
			quantidade + "\"," + 
			quantidade_minima  + ")");
		} catch (SQLException e) {
		System.out.println("Vc errou!!!");
			e.printStackTrace();
		}
	}

Linha de comando no prompt de comando (CMD.EXE) do windows

java -classpath .;sqlitejdbc.jar controle_estoque

Erro Gerado:


Vc errou!!!
java.sql.SQLException: near "de": syntax error
        at org.sqlite.DB.ex(DB.java:112)
        at org.sqlite.DB.throwex(DB.java:113)
        at org.sqlite.DB.prepare(Native Method)
        at org.sqlite.Stmt.executeUpdate(Stmt.java:145)
        at DBConnection.addProduto(DBConnection.java:41)
        at janela.<init>(janela.java:19)
        at controle_estoque.main(controle_estoque.java:12)

Não sei aonde esta o erro

Desde ja agradeço

Oi,

O erro está nas aspas de “INSERT INTO Produtos VALUES (”" +

Quando coluna for do tipo Text ou VARCHAR ou String, deve-se colocar um aspa simples entre ela +"’"+produto+"’"

Tchauzin!

Obrigado Lina pela resposta , mas continua dando erro devo ter colocado alguma coisa errada

Trecho do codigo


public void addProduto(String codigo,String produto,String preco,String comissao,String quantidade,String quantidade_minima) {
		try {
			this.stm = this.conn.createStatement();
			this.stm.executeUpdate("INSERT INTO Produtos VALUES (\"'" + 
			codigo + "'" + 
			produto + "'" + 
			preco + "'" + 
			comissao + "'" + 
			quantidade + "'" + 
			quantidade_minima  + ")");
		} catch (SQLException e) {
		System.out.println("Vc errou!!!");
			e.printStackTrace();
		}
	}

Erro Gerado


Vc errou!!!
java.sql.SQLException: unrecognized token: ""'0001'Doce de Banana'2.00'1.00'10'1
)"
        at org.sqlite.DB.ex(DB.java:112)
        at org.sqlite.DB.throwex(DB.java:113)
        at org.sqlite.DB.prepare(Native Method)
        at org.sqlite.Stmt.executeUpdate(Stmt.java:145)
        at DBConnection.addProduto(DBConnection.java:41)
        at janela.<init>(janela.java:19)
        at controle_estoque.main(controle_estoque.java:12)

[quote=Rafael Costa Teixeira]Obrigado Lina pela resposta , mas continua dando erro devo ter colocado alguma coisa errada

Trecho do codigo


public void addProduto(String codigo,String produto,String preco,String comissao,String quantidade,String quantidade_minima) {
		try {
			this.stm = this.conn.createStatement();
			this.stm.executeUpdate("INSERT INTO Produtos VALUES (\"'" + 
			codigo + "'" + 
			produto + "'" + 
			preco + "'" + 
			comissao + "'" + 
			quantidade + "'" + 
			quantidade_minima  + ")");
		} catch (SQLException e) {
		System.out.println("Vc errou!!!");
			e.printStackTrace();
		}
	}

Erro Gerado


Vc errou!!!
java.sql.SQLException: unrecognized token: ""'0001'Doce de Banana'2.00'1.00'10'1
)"
        at org.sqlite.DB.ex(DB.java:112)
        at org.sqlite.DB.throwex(DB.java:113)
        at org.sqlite.DB.prepare(Native Method)
        at org.sqlite.Stmt.executeUpdate(Stmt.java:145)
        at DBConnection.addProduto(DBConnection.java:41)
        at janela.<init>(janela.java:19)
        at controle_estoque.main(controle_estoque.java:12)

[/quote]
Você colocou as aspas trocadas…

Tente assim:

try { this.stm = this.conn.createStatement(); this.stm.executeUpdate("INSERT INTO Produtos VALUES ( codigo + " , " + "'" + produto + "' , " + preco + " , " + comissao + " , " + quantidade + " , " + quantidade_minima + ")"); }
Acho que é assim…
As aspas devem “envolver” apenas as variáveis tipo char e String…

[edit]Colocando as Vírgulas

Obrigado a todos pela ajuda

Consegui funcionar assim:


public void addProduto(String codigo,String produto,String preco,String comissao,String quantidade,String quantidade_minima) {
		try {
			this.stm = this.conn.createStatement();
			this.stm.executeUpdate("INSERT INTO Produtos VALUES ('" + 
			codigo + "','" + 
			produto + "','" + 
			preco + "','" + 
			comissao + "','" + 
			quantidade + "','" + 
			quantidade_minima  + "')");
		} catch (SQLException e) {
		System.out.println("Vc errou!!!");
			e.printStackTrace();
		}
	}

Mais uma vez agradeço a todos pela ajuda

Até mais