Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Sqlite没有这样的表错误代码=1_Android_Database_Sqlite_Class - Fatal编程技术网

Android Sqlite没有这样的表错误代码=1

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

我在Motodev上的项目遇到了严重的问题,我对android做了一个apk,现在我正在尝试在其上实现一个数据库,我用教程进行构建,但我遇到了两个问题,只有两个表和一个数据库,如下所示:

 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();
}