大佬教程收集整理的这篇文章主要介绍了android.database.sqlite.SQLiteException:near“:语法错误(代码1):,同时编译:android编程错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的logcat.
02-23 01:55:41.494 855-855/tubapps.budgetdatabase E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponenTinfo{tubapps.budgetdatabase/tubapps.budgetdatabase.MainActivity}: android.database.sqlite.sqliteException: near "create_income_table": Syntax error (code 1):,while compiling: create_income_table income(_id INTEGER PRIMARY KEY AUTOINCREMENT,income_amount TEXT NOT NULL,income_payer TEXT NOT NULL,income_date text NOT NULL,income_category TEXT NOT NULL,income_payments TEXT NOT null); at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) at android.app.ActivityThread.access$600(ActivityThread.java:130) at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1195) at android.os.Handler.dispatchmessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.sqliteException: near "create_income_table": Syntax error (code 1):,income_payments TEXT NOT null); at android.database.sqlite.sqliteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.sqliteConnection.acquirePreparedStatement(sqliteConnection.java:882) at android.database.sqlite.sqliteConnection.prepare(sqliteConnection.java:493) at android.database.sqlite.sqliteSession.prepare(sqliteSession.java:588) at android.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:58) at android.database.sqlite.sqliteStatement.<init>(sqliteStatement.java:31) at android.database.sqlite.sqliteDatabase.executesql(sqliteDatabase.java:1663) at android.database.sqlite.sqliteDatabase.execsql(sqliteDatabase.java:1594) at tubapps.budgetdatabase.DBHelper.onCreate(DBHelper.java:55) at android.database.sqlite.sqliteOpenHelper.getDatabaseLocked(sqliteOpenHelper.java:252) at android.database.sqlite.sqliteOpenHelper.getWritableDatabase(sqliteOpenHelper.java:164) at tubapps.budgetdatabase.sqlController.open(sqlController.java:21) at tubapps.budgetdatabase.MainActivity.onCreate(MainActivity.java:29) at android.app.Activity.performCreate(Activity.java:5008) at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1079) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) at android.app.ActivityThread.access$600(ActivityThread.java:130) at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1195) at android.os.Handler.dispatchmessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)
这是我的dbHelper.
public class DBHelper extends sqliteOpenHelper { // TABLE INFORMATTION public static final String table_INCOME = "income"; public static final String INCOME_ID = "_id"; public static final String INCOME_amouNT = "income_amount"; public static final String INCOME_PAYER = "income_payer"; public static final String INCOME_DATE = "income_date"; public static final String INCOME_CATEGORY = "income_category"; public static final String INCOME_PAymENTS = "income_payments"; public static final String table_EXPENSE = "expense"; public static final String EXPENSE_ID = "_id"; public static final String EXPENSE_amouNT = "expense_amount"; public static final String EXPENSE_PAYEE = "expense_payee"; public static final String EXPENSE_DATE = "expense_date"; public static final String EXPENSE_CATEGORY = "expense_category"; public static final String EXPENSE_PAymENTS = "expense_payments"; // DATABASE INFORMATION static final String db_name = "BUDGET.DB"; static final int DB_VERSION = 1; // TABLE CREATION STATEMENT private static final String CREATE_INCOME_TABLE = "createIncoMetable " + TABLE_INCOME + "(" + INCOME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + INCOME_amouNT + " TEXT NOT NULL," + INCOME_PAYER + " TEXT NOT NULL," + INCOME_DATE + " TEXT NOT NULL," + INCOME_CATEGORY + " TEXT NOT NULL," + INCOME_PAymENTS + " TEXT NOT null);"; private static final String CREATE_EXPENSE_TABLE = "createExpenseTable " + TABLE_EXPENSE + "(" + EXPENSE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + EXPENSE_amouNT + " TEXT NOT NULL," + EXPENSE_PAYEE + " TEXT NOT NULL," + EXPENSE_DATE + " TEXT NOT NULL," + EXPENSE_CATEGORY + " TEXT NOT NULL," + EXPENSE_PAymENTS + " TEXT NOT null);"; public DBHelper(Context context) { super(context,db_name,null,DB_version); } @Override public void onCreate(sqliteDatabase db) { db.execsql(CREATE_INCOME_TABLE); db.execsql(CREATE_EXPENSE_TABLE); } @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { db.execsql("drop table IF EXISTS " + TABLE_INCOME); db.execsql("drop table IF EXISTS " + TABLE_EXPENSE); onCreate(db); } }
这是我的sqlcontroller.
public class sqlController { private DBHelper dbHelper; private Context ourcontext; private sqliteDatabase database; public sqlController(Context C) { ourcontext = c; } public sqlController open() throws sqlException { dbHelper = new DBHelper(ourcontext); database = dbHelper.getWritableDatabase(); return this; } public void close() { dbHelper.close(); } public void inserTincomeData(String incomeamount,String incomePayer,String incomeDate,String incomeCategory,String incomePayments) { ContentValues cv = new ContentValues(); cv.put(DBHelper.INCOME_amouNT,incomeamount); cv.put(DBHelper.INCOME_PAYER,incomePayer); cv.put(DBHelper.INCOME_DATE,incomeDatE); cv.put(DBHelper.INCOME_CATEGORY,incomeCategory); cv.put(DBHelper.INCOME_PAymENTS,incomePayments); database.insert(DBHelper.TABLE_INCOME,cv); } public void insertExpenseData(String expenseamount,String expensePayee,String expenseDate,String expenseCategory,String expensePayments) { ContentValues cv = new ContentValues(); cv.put(DBHelper.EXPENSE_amouNT,expenseamount); cv.put(DBHelper.EXPENSE_PAYEE,expensePayeE); cv.put(DBHelper.EXPENSE_DATE,expenseDatE); cv.put(DBHelper.EXPENSE_CATEGORY,expenseCategory); cv.put(DBHelper.EXPENSE_PAymENTS,expensePayments); database.insert(DBHelper.TABLE_EXPENSE,cv); } //GetTing cursor to read data from table public cursor readIncomeData() { String[] allcolumns = new String[] { DBHelper.INCOME_ID,DBHelper.INCOME_amouNT,DBHelper.INCOME_PAYER,DBHelper.INCOME_DATE,DBHelper.INCOME_CATEGORY,DBHelper.INCOME_PAymENTS }; cursor c = database.query(DBHelper.TABLE_INCOME,allcolumns,null); if (c != null) { c.moveToFirst(); } return c; } //GetTing cursor to read data from table public cursor readExpenseData() { String[] allcolumns = new String[] { DBHelper.EXPENSE_ID,DBHelper.EXPENSE_amouNT,DBHelper.EXPENSE_PAYEE,DBHelper.EXPENSE_DATE,DBHelper.EXPENSE_CATEGORY,DBHelper.EXPENSE_PAymENTS }; cursor c = database.query(DBHelper.TABLE_EXPENSE,null); if (c != null) { c.moveToFirst(); } return c; } //updating record data into table by id public int updateIncomeData(long incomEID,String newIncomeamount,String newIncomePayer,String newIncomeDate,String newIncomeCategory,String newIncomePayments) { ContentValues cvupdate = new ContentValues(); cvupdate.put(DBHelper.INCOME_amouNT,newIncomeamount); cvupdate.put(DBHelper.INCOME_PAYER,newIncomePayer); cvupdate.put(DBHelper.INCOME_DATE,newIncomeDatE); cvupdate.put(DBHelper.INCOME_CATEGORY,newIncomeCategory); cvupdate.put(DBHelper.INCOME_PAymENTS,newIncomePayments); int i = database.update(DBHelper.TABLE_INCOME,cvupdate,DBHelper.INCOME_ID + " = " + incomEID,null); return i; } public int updateExpenseData(long expensEID,String newExpenseamount,String newExpensePayer,String newExpenseDate,String newExpenseCategory,String newExpensePayments) { ContentValues cvupdate = new ContentValues(); cvupdate.put(DBHelper.EXPENSE_amouNT,newExpenseamount); cvupdate.put(DBHelper.EXPENSE_PAYEE,newExpensePayer); cvupdate.put(DBHelper.EXPENSE_DATE,newExpenseDatE); cvupdate.put(DBHelper.EXPENSE_CATEGORY,newExpenseCategory); cvupdate.put(DBHelper.EXPENSE_PAymENTS,newExpensePayments); int i = database.update(DBHelper.TABLE_EXPENSE,DBHelper.EXPENSE_ID + " = " + expensEID,null); return i; } // deleting record data from table by id public void deleteIncomeData(long incomEID) { database.delete(DBHelper.TABLE_INCOME,DBHelper.INCOME_ID + "=" + incomEID,null); } public void deleteExpenseData(long expensEID) { database.delete(DBHelper.TABLE_EXPENSE,DBHelper.EXPENSE_ID + "=" + expensEID,null); } }
这是我的主要活动.
public class MainActivity extends ActionBarActivity { ListView lv; sqlController dbcon; TextView incomEID_tv,incomePayer_tv,incomeamount_tv; TextView incomeDate_tv,incomeCategory_tv,incomePayments_tv; @Override protected void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); setContentView(R.layout.activity_main); dbcon = new sqlController(this); dbcon.open(); lv = (ListView) findViewById(R.id.incomeList_id); cursor cursor = dbcon.readIncomeData(); String[] from = new String[] { DBHelper.INCOME_ID,DBHelper.INCOME_PAymENTS}; int[] to = new int[] { R.id.income_id,R.id.income_amount,R.id.income_payer,R.id.income_date,R.id.income_category,R.id.income_payments}; SimplecursorAdapter adapter = new SimplecursorAdapter( MainActivity.this,R.layout.income_entry,cursor,from,to); adapter.notifyDataSetChanged(); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.onItemClickListener() { @Override public void onItemClick(AdapterView<?> parent,View view,int position,long id) { incomEID_tv = (TextView) view.findViewById(R.id.income_id); incomeamount_tv = (TextView) view.findViewById(R.id.income_amount); incomePayer_tv = (TextView) view.findViewById(R.id.income_payer); incomeDate_tv = (TextView) view.findViewById(R.id.income_datE); incomeCategory_tv = (TextView) view.findViewById(R.id.income_category); incomePayments_tv = (TextView) view.findViewById(R.id.income_payments); String incomEID = incomEID_tv.getText().toString(); String incomeamount = incomeamount_tv.getText().toString(); String incomePayer = incomePayer_tv.getText().toString(); String incomeDate = incomeDate_tv.getText().toString(); String incomeCategory = incomeCategory_tv.getText().toString(); String incomePayments = incomePayments_tv.getText().toString(); Intent modify_intent = new Intent(getApplicationContext(),IncomeEdit.class); modify_intent.putExtra("incomEID",incomEID); modify_intent.putExtra("newIncomeamount",incomeamount); modify_intent.putExtra("newIncomePayer",incomePayer); modify_intent.putExtra("newIncomeDate",incomeDatE); modify_intent.putExtra("newIncomeCategory",incomeCategory); modify_intent.putExtra("newIncomePayments",incomePayments); startActivity(modify_intent); } }); }
db.execsql(CREATE_INCOME_TABLE);
database = dbHelper.getWritableDatabase();@H_491_5@mainActivity的第29行是这样的:
dbcon.open();
我在其他问题中看到它可能来自表名.它们之间有空格,但在我改变之后,它仍然无法正常工作.
create_income_table income( _id INTEGER PRIMARY KEY AUTOINCREMENT,income_payments TEXT NOT NULL );
用create table替换create_income_table.您需要执行此sql:
create table income( _id INTEGER PRIMARY KEY AUTOINCREMENT,income_payments TEXT NOT NULL );
以上是大佬教程为你收集整理的android.database.sqlite.SQLiteException:near“:语法错误(代码1):,同时编译:android编程错误全部内容,希望文章能够帮你解决android.database.sqlite.SQLiteException:near“:语法错误(代码1):,同时编译:android编程错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。