运行时异常而创建SQLite数据库

编程入门 行业动态 更新时间:2024-10-26 20:21:33
本文介绍了运行时异常而创建SQLite数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

谁能告诉我,什么是错的。 previously它的工作完美地一表本本,但现在我要创建3个表的一个新的数据库,它不是执行。 这里的辅助类。

公共类DatabaseHelper扩展SQLiteOpenHelper {     私有静态最后弦乐DATABASE_NAME =MyDatabse1.db;     公共DatabaseHelper(上下文的背景下)     {         超级(上下文,DATABASE_NAME,空,1);     }     公共无效的onCreate(SQLiteDatabase DB)     {         db.execSQL(CREATE TABLE的UserDetails(_id INTEGER AUTOINCREMENT,用户名文本UNIQUE,密码文本,名称文本,联系号码文本,地址文本,精细INTEGER,BOOKID INTEGER,PRIMARY KEY(_id,用户名,密码)););         db.execSQL(CREATE TABLE问题(_id INTEGER AUTOINCREMENT,book_id INTEGER UNIQUE,用户名文本,ISSUE_DATE日期,return_date日期,PRIMARY KEY(_id,用户名,book_id)););         db.execSQL(CREATE TABLE bookstable(_id INTEGER PRIMARY KEY AUTOINCREMENT,标题文字,作者文本,文本类,可用性TEXT);); }     公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){         db.execSQL(DROP TABLE IF EXISTS的UserDetails);         db.execSQL(DROP TABLE IF EXISTS问题);         db.execSQL(DROP TABLE IF EXISTS bookstable);         的onCreate(DB);         }

和这里的堆栈跟踪

十二月7号至18日:47:22.686:E / SQLiteLog(3423):(1)近自动增量:语法错误 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):致命异常:主要 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):java.lang.IllegalStateException:无法执行活动的方法 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):android.database.sqlite.SQLiteException:由造成近自动增量:语法错误(code 1):在编制:CREATE TABLE的UserDetails( _id INTEGER AUTOINCREMENT,用户名文本UNIQUE,密码文本,名称文本,联系号码文本,地址文本,精细INTEGER,BOOKID INTEGER,PRIMARY KEY(_id,用户名,密码)); 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteConnection.native prepareStatement(本机方法) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteConnection.acquire preparedStatement(SQLiteConnection.java:889) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteConnection prepare(SQLiteConnection.java:500) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteSession prepare(SQLiteSession.java:588) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteProgram< INIT>(SQLiteProgram.java:58) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteStatement< INIT>(SQLiteStatement.java:31) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1672) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在com.example.libraryplus.DatabaseHelper.onCreate(DatabaseHelper.java:26) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在com.example.libraryplus.DatabaseHelper.add_books(DatabaseHelper.java:53) 十二月7日至18日:47:22.916:E / AndroidRuntime(3423):在com.example.libraryplus.AddBooksActivity.addNewBook​​s(AddBooksActivity.java:42)

解决方案

自动增量列必须是主键。

有不可能有一个自增塔和多列主键

Could anyone tell me what's wrong. Previously it worked perfectly for one table "books" but now I'm creating a new database with 3 tables and it's not executing. Here's the helper class.

public class DatabaseHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME="MyDatabse1.db"; public DatabaseHelper(Context context) { super(context,DATABASE_NAME,null,1); } public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE userdetails (_id INTEGER AUTOINCREMENT, username TEXT UNIQUE, password TEXT, name TEXT, phonenumber TEXT, address TEXT, fine INTEGER, bookid INTEGER, PRIMARY KEY (_id, username, password));"); db.execSQL("CREATE TABLE issue (_id INTEGER AUTOINCREMENT, book_id INTEGER UNIQUE, username TEXT, issue_date DATE, return_date DATE, PRIMARY KEY (_id, username, book_id));"); db.execSQL("CREATE TABLE bookstable (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT, category TEXT, availability TEXT);"); } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS userdetails"); db.execSQL("DROP TABLE IF EXISTS issue"); db.execSQL("DROP TABLE IF EXISTS bookstable"); onCreate(db); }

And here's the stack trace

07-18 12:47:22.686: E/SQLiteLog(3423): (1) near "AUTOINCREMENT": syntax error 07-18 12:47:22.916: E/AndroidRuntime(3423): FATAL EXCEPTION: main 07-18 12:47:22.916: E/AndroidRuntime(3423): java.lang.IllegalStateException: Could not execute method of the activity 07-18 12:47:22.916: E/AndroidRuntime(3423): Caused by: android.database.sqlite.SQLiteException: near "AUTOINCREMENT": syntax error (code 1): , while compiling: CREATE TABLE userdetails (_id INTEGER AUTOINCREMENT, username TEXT UNIQUE, password TEXT, name TEXT, phonenumber TEXT, address TEXT, fine INTEGER, bookid INTEGER, PRIMARY KEY (_id, username, password)); 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1672) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603) 07-18 12:47:22.916: E/AndroidRuntime(3423): at com.example.libraryplus.DatabaseHelper.onCreate(DatabaseHelper.java:26) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252) 07-18 12:47:22.916: E/AndroidRuntime(3423): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 07-18 12:47:22.916: E/AndroidRuntime(3423): at com.example.libraryplus.DatabaseHelper.add_books(DatabaseHelper.java:53) 07-18 12:47:22.916: E/AndroidRuntime(3423): at com.example.libraryplus.AddBooksActivity.addNewBooks(AddBooksActivity.java:42)

解决方案

An AUTOINCREMENT column must be the PRIMARY KEY.

It is not possible to have an autoincrementing column and a multi-column primary key.

更多推荐

运行时异常而创建SQLite数据库

本文发布于:2023-11-30 21:39:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1651552.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:异常   数据库   SQLite

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!