Vin*_*lla -1 database sqlite android exception localdb
我正在尝试在Android SQLite上创建一个本地数据库,但每次我尝试创建我在我的logcat上得到这个异常,为什么会发生这种情况?我已经删除了应用程序并以新的方式运行...
private static final int DATABASE_VERSAO = 1;
public static final String DATABASE_NAME = "STARA_DB";
private static final String TB_CLIENTE = "Table de Clientes";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase database;
private static final String TAG = "DBAdapter";
String TabelaClientes = "CREATE TABLE "
+ TB_CLIENTE
+ "(ID_CLIENTE PRIMARY KEY NOT NULL AUTOINCREMENT, "
+ "KUNNR TEXT, "
+ "NAME1 TEXT );";
public ClienteDAO(Context ctx) {
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSAO);
}
public void onCreate(SQLiteDatabase database) {
try {
database.execSQL(TB_CLIENTE);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS" + TB_CLIENTE);
// onCreate(database);
onUpgrade(database, oldVersion, newVersion);
}
public long insertCliente(String KUNNR, String NAME1) {
ContentValues initialValuesClientes = new ContentValues();
initialValuesClientes.put("KUNNR", KUNNR);
initialValuesClientes.put("NAME1", NAME1);
return database.insert(TB_CLIENTE, null, initialValuesClientes);
}
public List<ClienteModelo> getListaClientes() {
List<ClienteModelo> clientes = new ArrayList<ClienteModelo>();
Cursor cCli = DBHelper.getReadableDatabase().rawQuery("Select KUNNR, NAME1 from " + TB_CLIENTE + ";", null);
while (cCli.moveToNext()) {
ClienteModelo cliente = new ClienteModelo();
// cliente.setClienteID(cCli.getLong(cCli.getColumnIndex("ID_CLIENTE")));
cliente.setKunnr(cCli.getString(cCli.getColumnIndex("KUNNR")));
cliente.setName1(cCli.getString(cCli.getColumnIndex("NAME1")));
clientes.add(cliente);
}
cCli.close();
return clientes;
}
public void deleteCliente() {
database.delete(TB_CLIENTE, null, null);
}
Run Code Online (Sandbox Code Playgroud)
和LogCat上的消息:
no such table: TABLE_CLIENTE
java.lang.RuntimeException: Unable to start activity ComponentInfo{stara.formularios/stara.formularios.views.FormNota}: android.database.sqlite.SQLiteException: no such table: TABLE_CLIENTE (code 1): , while compiling: Select KUNNR, NAME1 from TABLE_CLIENTE;
Caused by: android.database.sqlite.SQLiteException: no such table: TABLE_CLIENTE (code 1): , while compiling: Select KUNNR, NAME1 from TABLE_CLIENTE;"
Run Code Online (Sandbox Code Playgroud)
您CREATE TABLE忽略了语法错误.
"Table de Clientes"应该是一个有效的标识符,就像"TABLE_CLIENTE"你以后使用的那样,根据你的堆栈跟踪.
ID_CLIENTE PRIMARY KEY NOT NULL AUTOINCREMENT需要有INTEGER它,例如ID_CLIENTE INTEGER PRIMARY KEY AUTOINCREMENT.这NOT NULL是多余的; 主键不能为空.
您需要实际传递SQL而不是表名execSQL().
删除你的try- .回调需要抛出错误而不是忽略问题.catchonCreate()
更改后,卸载您的应用程序,以便删除旧的数据库文件.
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |