我在sqLiteDatabase.execSQL行的数据库处理程序类中的sq lite代码上遇到错误,这里运行的是我的异常和代码。android studio中的Sqlite
例外:
app.caloriescounter.admin.sqliteapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.caloriescounter.admin.sqliteapp, PID: 2605
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.caloriescounter.admin.sqliteapp/com.app.caloriescounter.admin.sqliteapp.MainActivity}: android.database.sqlite.SQLiteException: near "TABLEemploy_table": syntax error (code 1): , while compiling: CREATE TABLEemploy_table(_ID INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT,Email TEXT);
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.database.sqlite.SQLiteException: near "TABLEemploy_table": syntax error (code 1): , while compiling: CREATE TABLEemploy_table(_ID INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT,Email TEXT);
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
代码
package com.app.caloriescounter.admin.sqliteapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Admin on 9/15/2016.
*/
public class Databasehandler extends SQLiteOpenHelper {
private static final int Database_ver=1;
private static final String Database_name="TECHAs.db";
private static final String Table_name="employ_table";
private static final String Key_id="_ID";
private static final String Key_name="Name";
private static final String Key_email="Email";
public Databasehandler(Context context) {
super(context, Database_name, null, Database_ver);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("CREATE TABLE" + Table_name + "(_ID INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT,Email TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS"+Table_name);
onCreate(sqLiteDatabase);
}
public void addPerson(Person person){
SQLiteDatabase mydb=this.getWritableDatabase();
ContentValues contentValues=new ContentValues();
contentValues.put(Key_name,person.getName());
contentValues.put(Key_email,person.getEmail());
mydb.insert(Table_name,null,contentValues);
mydb.close();
}
public int updateperson(Person person){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues contentValues=new ContentValues();
contentValues.put(Key_name,person.getName());
contentValues.put(Key_email,person.getEmail());
return db.update(Table_name,contentValues,Key_id+" -?",new String[] {String.valueOf(person.getId())});
}
public void Deleteperson(Person person){
SQLiteDatabase db=this.getWritableDatabase();
db.delete(Table_name,Key_id+" -?",new String[] {String.valueOf(person.getId())});
db.close();
}
public Person getperson(int id){
SQLiteDatabase db=this.getReadableDatabase();
Cursor cursor=db.query(Table_name,new String[] {Key_id,Key_name,Key_email},Key_id+" -?",
new String[]{String.valueOf(id)},null,null,null,null);
if(cursor!=null)
cursor.moveToFirst();
return new Person(cursor.getInt(0),cursor.getString(1),cursor.getString(2));
}
public List<Person> getallperson(){
List<Person> list=new ArrayList<>();
String selectquer="SELECT * FROM"+Table_name;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor=db.rawQuery(selectquer,null);
if(cursor.moveToFirst()){
do {
Person person=new Person();
person.setId(cursor.getInt(0));
person.setName(cursor.getString(1));
person.setEmail(cursor.getString(2));
list.add(person);
}
while (cursor.moveToNext());
}
return list;
}
}
从例外情况可以看出'TABLE'和'employ_table' @'之间没有空格CREATE TABLEemploy_table' – Raghunandan
您在'TABLE'后面缺少空格,您可以从错误消息中清楚地看到 –