>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



ERRO AO TENTAR GRAVAR NO BD -> sqlite returned error code = 1 msg = no such table


Estou tentando gravar no banco local sqlite e sempre recebo essa mensagem: sqlite returned error code = 1 msg = no such table.
Não consegui identificar o problema.



package br.esdras.clientes;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DB extends SQLiteOpenHelper{

private static String dbNome = "cadastro.db";
private static String sql = "CREATE TABLE [clientes] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] VARCHAR(30), [endereco] VARCHAR(50), [email] VARCHAR(40), [numero] VARCHAR(10))";
private static int version = 1;
public DB(Context ctx) {
super(ctx, dbNome, null, version);

}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


}

}



package br.esdras.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import br.esdras.clientes.DB;
import br.esdras.vo.clienteVO;

public class clienteDAO {

private static String nome_tabela = "clientes";
private static Context ctx;
private static String[] colunas = {"nome", "endereco", "email", "numero"};

public clienteDAO(Context ctx){
this.ctx = ctx;
}

public boolean insert(clienteVO vo){
SQLiteDatabase db = new DB(ctx).getWritableDatabase();

ContentValues ctv = new ContentValues();
ctv.put("nome", vo.getNome());
ctv.put("endereco", vo.getEndereco());
ctv.put("email", vo.getEmail());
ctv.put("numero", vo.getNumero());

return (db.insert(nome_tabela, null, ctv) > 0);
}




package br.esdras.clientes;

import br.esdras.dao.clienteDAO;
import br.esdras.vo.clienteVO;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Cadastro extends Activity{

private EditText edtNome;
private EditText edtEndereco;
private EditText edtEmail;
private EditText edtNumero;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cadastro);

Button btnCadastrar = (Button)findViewById(R.id.btnCadastrar);
edtNome = (EditText)findViewById(R.id.edtNome);
edtEndereco = (EditText)findViewById(R.id.edtEndereco);
edtEmail = (EditText)findViewById(R.id.edtEmail);
edtNumero = (EditText)findViewById(R.id.edtNumero);

btnCadastrar.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
clienteVO vo = new clienteVO();
vo.setNome(edtNome.getText().toString());
vo.setEndereco(edtEndereco.getText().toString());
vo.setEmail(edtEmail.getText().toString());
vo.setNumero(edtNumero.getText().toString());

clienteDAO dao = new clienteDAO(getBaseContext());
if(dao.insert(vo)){
Toast.makeText(getBaseContext(), "Gravado com Sucesso!", Toast.LENGTH_SHORT).show();
}
}
});

}


}



11 Respostas


MEU CURSO É O
Curso de Android Best Practices




Olá

Quando o erro é gerado?




esse erro aqui -> sqlite returned error code = 1 msg = no such table

não criou a tabela clientes, ai quando vai inserir nela da esse erro, abaixo o comando para criação da tabela usado:


private static String sql = "CREATE TABLE [clientes] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] VARCHAR(30), [endereco] VARCHAR(50), [email] VARCHAR(40), [numero] VARCHAR(10))";




Olá

Poste todo erro do LogCat do erro, por favor.




Antes, tente retirar os "[" e "]" da string






Olá


Você verificou se ele executou este método antes?

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);

}

Ele criou o banco a tabela? Pode verificar?




Criou o banco sim mas a tabela não.




Ola Esdras

coloque um ponto e virgula antes dos "

assim

private static String sql = "CREATE TABLE [clientes] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] VARCHAR(30), [endereco] VARCHAR(50), [email] VARCHAR(40), [numero] VARCHAR(10));";




caraca ainda continua o problema não cria a tabela nem a pau, rodei no meu celular em seguida copiei o banco dele para o pc e abri no sqlite e a tabela não foi criada. :(




poste o seu codigo aqui... por favor...
da criaçao do banco...