Android Sqlite没有这样的表错误代码=1
我在Motodev上的项目遇到了严重的问题,我对android做了一个apk,现在我正在尝试在其上实现一个数据库,我用教程进行构建,但我遇到了两个问题,只有两个表和一个数据库,如下所示:Android Sqlite没有这样的表错误代码=1,android,database,sqlite,class,Android,Database,Sqlite,Class,我在Motodev上的项目遇到了严重的问题,我对android做了一个apk,现在我正在尝试在其上实现一个数据库,我用教程进行构建,但我遇到了两个问题,只有两个表和一个数据库,如下所示: public class VeiculoDAO { public static final String NOME_TABELA ="Veiculo"; public static final String COLUNA_ID = "id"; public
public class VeiculoDAO {
public static final String NOME_TABELA ="Veiculo";
public static final String COLUNA_ID = "id";
public static final String COLUNA_MARCA = "marca";
public static final String COLUNA_MVEICULO = "mveiculo";
public static final String COLUNA_PLACA = "placa";
public static final String COLUNA_RENAVAM = "renavam";
public static final String COLUNA_TIPOVEICULO = "tipoveiculo";
public static final String SCRIPT_CRIACAO_TABELA_VEICULOS = "CREATE TABLE " + NOME_TABELA + "("
+ COLUNA_ID + " INTEGER PRIMARY KEY," + COLUNA_MARCA + " TEXT," + COLUNA_PLACA + " TEXT,"
+ COLUNA_RENAVAM + " TEXT," + COLUNA_MVEICULO + " TEXT," + COLUNA_TIPOVEICULO + " TEXT" + ")";
public static final String SCRIPT_DELECAO_TABELA = "DROP TABLE IF EXISTS " + NOME_TABELA;
private SQLiteDatabase dataBase = null;
private static VeiculoDAO instance;
public static VeiculoDAO getInstance(Context context) {
if(instance == null)
instance = new VeiculoDAO(context);
return instance;
}
private VeiculoDAO(Context context) {
PersistenceHelper persistenceHelper = PersistenceHelper.getInstance(context);
dataBase = persistenceHelper.getWritableDatabase();
}
public void salvar(Veiculo veiculo) {
ContentValues values = gerarContentValeuesVeiculo(veiculo);
dataBase.insert(NOME_TABELA, null, values);
}
public List<Veiculo> recuperarTodos() {
String queryReturnAll = "SELECT * FROM " + NOME_TABELA;
Cursor cursor = dataBase.rawQuery(queryReturnAll, null);
List<Veiculo> veiculos = construirVeiculoPorCursor(cursor);
return veiculos;
}
public void deletar(Veiculo veiculo) {
String[] valoresParaSubstituir = {
String.valueOf(veiculo.getId())
};
dataBase.delete(NOME_TABELA, COLUNA_ID + " = ?", valoresParaSubstituir);
}
public void editar(Veiculo veiculo) {
ContentValues valores = gerarContentValeuesVeiculo(veiculo);
String[] valoresParaSubstituir = {
String.valueOf(veiculo.getId())
};
dataBase.update(NOME_TABELA, valores, COLUNA_ID + " = ?", valoresParaSubstituir);
}
public void fecharConexao() {
if(dataBase != null && dataBase.isOpen())
dataBase.close();
}
private List<Veiculo> construirVeiculoPorCursor(Cursor cursor) {
List<Veiculo> veiculos = new ArrayList<Veiculo>();
if(cursor == null)
return veiculos;
try {
if (cursor.moveToFirst()) {
do {
int indexID = cursor.getColumnIndex(COLUNA_ID);
int indexMarca = cursor.getColumnIndex(COLUNA_MARCA);
int indexRenavam = cursor.getColumnIndex(COLUNA_RENAVAM);
int indexMveiculo = cursor.getColumnIndex(COLUNA_MVEICULO);
int indexTipoveiculo = cursor.getColumnIndex(COLUNA_TIPOVEICULO);
int id = cursor.getInt(indexID);
String marca = cursor.getString(indexMarca);
String placa = cursor.getString(indexPlaca);
String renavam = cursor.getString(indexRenavam);
String mveiculo = cursor.getString(indexMveiculo);
String tipoveiculo = cursor.getString(indexTipoveiculo);
Veiculo veiculo = new Veiculo(id, marca, placa, renavam, mveiculo, tipoveiculo);
veiculos.add(veiculo);
} while (cursor.moveToNext());
}
} finally {
cursor.close();
}
return veiculos;
}
private ContentValues gerarContentValeuesVeiculo(Veiculo veiculo) {
ContentValues values = new ContentValues();
values.put(COLUNA_ID, veiculo.getId());
values.put(COLUNA_MARCA, veiculo.getMarca());
values.put(COLUNA_PLACA, veiculo.getPlaca());
values.put(COLUNA_RENAVAM, veiculo.getRenavam());
values.put(COLUNA_MVEICULO, veiculo.getMveiculo());
values.put(COLUNA_TIPOVEICULO, veiculo.getTipoveiculo());
return values; }
}
这是地籍表的问题
I/ActivityManager(58): Starting activity: Intent {
cmp=com.example.sgm/.Cadastro } 05-27 07:16:04.384:
I/ActivityManager(58): Displayed activity com.example.sgm/.Cadastro:
435 ms (total 435 ms) 05-27 07:16:04.623: D/dalvikvm(107):
GC_EXTERNAL_ALLOC freed 3136 objects / 114640 bytes in 311ms 05-27
07:16:14.344: D/dalvikvm(107): GC_EXTERNAL_ALLOC freed 2178 objects /
83016 bytes in 62ms 05-27 07:16:24.284: D/dalvikvm(107):
GC_EXTERNAL_ALLOC freed 783 objects / 40168 bytes in 99ms 05-27
07:16:27.924: D/dalvikvm(58): GREF has increased to 301 05-27
07:16:30.713: D/dalvikvm(107): GC_EXTERNAL_ALLOC freed 606 objects /
33672 bytes in 75ms 05-27 07:16:39.064: D/dalvikvm(107):
GC_EXTERNAL_ALLOC freed 3175 objects / 115360 bytes in 119ms 05-27
07:16:43.214: D/dalvikvm(274): GC_FOR_MALLOC freed 12100 objects /
506008 bytes in 119ms 05-27 07:16:44.204: I/Database(274): sqlite
returned: error code = 1, msg = no such table: Cadastro 05-27
07:16:44.204: E/Database(274): Error inserting cep=123456 email=jmg
telefone=321 rg=1234 cpf=12345 nome=adgp telefoneDispositivo=654
senha=bjt endereco=twp 05-27 07:16:44.204: E/Database(274):
android.database.sqlite.SQLiteException: no such table: Cadastro: ,
while compiling: INSERT INTO Cadastro(cep, email, telefone, rg, cpf,
nome, telefoneDispositivo, senha, endereco) VALUES(?, ?, ?, ?, ?, ?,
?, ?, ?);
有人帮忙吗?抱歉,我的英语不好,但我不知道错误在哪里,我是新手,然后我把数据库的所有代码和logcat的一个重要部分都放进去了,如果有人知道,我将非常感激。您没有正确使用事务。如果调用
endTransaction()
而不调用setTransactionSuccessful()
,它将回滚事务中的所有更改。因此,您的CREATE TABLE
命令将回滚
有关于如何使用交易的清晰示例:
db.beginTransaction();
try {
...
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
我建议您清除应用程序中的数据,然后重新安装应用程序并尝试重新安装,\o,我更改了它并开始工作,谢谢,伙计,在我看到的地方(很多不同的示例),我没有看到SetTransactionSuccessful();不过没关系,现在正在工作,谢谢
D/PersistenceHelper(274): Creating
table...CREATE TABLE Cadastro(cpf TEXT PRIMARY KEY,nome TEXT,telefone
TEXT,telefoneDispositivo TEXT,email TEXT,rg TEXT,endereco TEXT,cep
TEXT,senha TEXT) 05-27 07:16:03.873: D/PersistenceHelper(274):
Creating table...CREATE TABLE Veiculo(id INTEGER PRIMARY KEY,marca
TEXT,placa TEXT,renavam TEXT,mveiculo TEXT,tipoveiculo TEXT) 05-27
07:16:03.915: D/PersistenceHelper(274): Opening the database...
/data/data/com.example.sgm/databases/ExemploVeiculo version 1 05-27
07:16:03.915: I/Database(274): sqlite returned: error code = 1, msg =
table Veiculo has no column named renavam 05-27 07:16:03.933:
E/Database(274): Error inserting placa=gjm id=1 marca=ad mveiculo=da
renavam=123 tipoveiculo=ptw 05-27 07:16:03.933: E/Database(274):
android.database.sqlite.SQLiteException: table Veiculo has no column
named renavam: , while compiling: INSERT INTO Veiculo(placa, id,
marca, mveiculo, renavam, tipoveiculo) VALUES(?, ?, ?, ?, ?, ?); 05-27
I/ActivityManager(58): Starting activity: Intent {
cmp=com.example.sgm/.Cadastro } 05-27 07:16:04.384:
I/ActivityManager(58): Displayed activity com.example.sgm/.Cadastro:
435 ms (total 435 ms) 05-27 07:16:04.623: D/dalvikvm(107):
GC_EXTERNAL_ALLOC freed 3136 objects / 114640 bytes in 311ms 05-27
07:16:14.344: D/dalvikvm(107): GC_EXTERNAL_ALLOC freed 2178 objects /
83016 bytes in 62ms 05-27 07:16:24.284: D/dalvikvm(107):
GC_EXTERNAL_ALLOC freed 783 objects / 40168 bytes in 99ms 05-27
07:16:27.924: D/dalvikvm(58): GREF has increased to 301 05-27
07:16:30.713: D/dalvikvm(107): GC_EXTERNAL_ALLOC freed 606 objects /
33672 bytes in 75ms 05-27 07:16:39.064: D/dalvikvm(107):
GC_EXTERNAL_ALLOC freed 3175 objects / 115360 bytes in 119ms 05-27
07:16:43.214: D/dalvikvm(274): GC_FOR_MALLOC freed 12100 objects /
506008 bytes in 119ms 05-27 07:16:44.204: I/Database(274): sqlite
returned: error code = 1, msg = no such table: Cadastro 05-27
07:16:44.204: E/Database(274): Error inserting cep=123456 email=jmg
telefone=321 rg=1234 cpf=12345 nome=adgp telefoneDispositivo=654
senha=bjt endereco=twp 05-27 07:16:44.204: E/Database(274):
android.database.sqlite.SQLiteException: no such table: Cadastro: ,
while compiling: INSERT INTO Cadastro(cep, email, telefone, rg, cpf,
nome, telefoneDispositivo, senha, endereco) VALUES(?, ?, ?, ?, ?, ?,
?, ?, ?);
db.beginTransaction();
try {
...
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}