Android 创建sqlite数据库时出错,给出语法错误
我正在使用android联系人列表应用程序,我刚刚开始在android平台上开发,在我的联系人列表应用程序中,我必须创建一个sqlite数据库表来存储联系人。我在创建sqlite数据库时遇到了困难。它在我的logcat窗口上给我一个错误,如: “Logcat显示这些错误”sqlite返回:错误代码=1,消息=near“Android 创建sqlite数据库时出错,给出语法错误,android,sqlite,Android,Sqlite,我正在使用android联系人列表应用程序,我刚刚开始在android平台上开发,在我的联系人列表应用程序中,我必须创建一个sqlite数据库表来存储联系人。我在创建sqlite数据库时遇到了困难。它在我的logcat窗口上给我一个错误,如: “Logcat显示这些错误”sqlite返回:错误代码=1,消息=near“ 准备“创建表位置(ID INT主键不为NULL、名称文本不为NULL、电话文本不为NULL、地址文本不为NULL、网站文本、主页文本不为NULL)、致命异常:main”java.
准备“创建表位置(ID INT主键不为NULL、名称文本不为NULL、电话文本不为NULL、地址文本不为NULL、网站文本、主页文本不为NULL)、致命异常:main”java.lang.RuntimeException:无法启动活动组件信息{com.webpreneur_contactlist/com.webpreneur_contactlist.WebpreneurActivity}:java.lang.IllegalStateException:数据库未打开“ 请帮帮我
public class DBHandler extends SQLiteOpenHelper{
private static final int DB_Version = 1;
private static final String DB_Name = "Places";
protected static final String Places_Table = "Places";
String name, Address, Website,ID;
//WebpreneurActivity Contact;
public static final String Key_ID = "ID";
public static final String Key_Name = "Name";
public static final String Key_Phone = "Phone";
public static final String Key_Address = "Address";
public static final String Key_Website = "Website";
public static final String Key_Home = "HOME";
public static final String PROJECTION[] = {
Key_ID,
Key_Name,
Key_Address,
Key_Phone,
Key_Home
};
String CREATE_PLACES_TABLE = "create table if not exists Places_Table (id integer primary key ,"+
"name VARCHAR not null, phone VARCHAR not null, address VARCAHR not null, website VARCHAR not null,Home VARCHAR not null)";
Context context;
SQLiteDatabase db;
public DBHandler(Context context) {
super(context, DB_Name, null, DB_Version);
Log.d("database1" ,"4");
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
Log.d("DB", "DB creationnewwwww");
db.execSQL("CREATE TABLE " + Places_Table + "(" +
Key_ID + " INT PRIMARY KEY NOT NULL," +
Key_Name + " TEXT NOT NULL," +
Key_Phone + " TEXT NOT NULL," +
Key_Address + " TEXT NOT NULL," +
Key_Website + " TEXT," +
Key_Home + " TEXT,");
Log.d("DB", "DB creationnewwwwwwwwwwwwwwwwwwwwwwwwwww");
}
catch(SQLiteException e){
Log.d("DB", "DB creation excptionhhhhhhhhhhhhhhh");
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("Drop Table If Exists" + Places_Table);
onCreate(db);
}
public DBHandler open()
{Log.d("DB", "DB creation 9");
db = this.getWritableDatabase();
onCreate(db);
Log.d("DB", "DB creation 9");
return this;
}
public void close()
{
db.close();
}
//Adding Places
void addPlaces( int id, String name,String phone, String address,String url){
Log.d("DB", "DB creation 1");
//SinglePlaceActivity single = new SinglePlaceActivity(); Log.d("DB", "DB creation 2");
ContentValues contentValues = new ContentValues();
Log.d("DB", "DB creation 3");
contentValues.put(Key_ID, id);
Log.d("DB", "DB creation 4");
contentValues.put(Key_Name, name);
contentValues.put(Key_Phone, phone);
contentValues.put(Key_Address, address);
contentValues.put(Key_Website, url);
Log.d("DB", "DB creation 4");
db.insert(Places_Table, null, contentValues);
Log.d("DB", "DB creation 5555");
//db.close();
}
public String getdata() {
// TODO Auto-generated method stub
String [] columns =new String[]{Key_ID ,Key_Name,Key_Address,Key_Website};
Cursor c =db.query(DB_Name, columns, null, null, null, null, null);
String Result="";
int iRow=c.getColumnIndex(Key_ID);
int iName=c.getColumnIndex(Key_Name);
int iAddress=c.getColumnIndex(Key_Address);
int iWebsite=c.getColumnIndex(Key_Website);
for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
Result=Result+c.getString(iRow)+" "+c.getString(iName)+ " "+c.getString(iAddress)+ " "+c.getString(iWebsite)+ "\n";
}
return Result;
}
public void createRow(String name, String address, String Phone, String home)
{
ContentValues initialValues = new ContentValues();
initialValues.put(Key_Name, name);
initialValues.put(Key_Address, address);
initialValues.put(Key_Phone, Phone);
initialValues.put(Key_Home, home);
//pass the initialValues to the database to insert the row
db.insert(Places_Table, null, initialValues);
}
public void deleteRow(long rowId){
db.delete(Places_Table, Key_ID+"="+rowId,null);
}
public boolean updateRow (long rowId, String name, String address, String Phone, String home){
ContentValues args = new ContentValues();
args.put(Key_Name, name);
args.put(Key_Address, address);
args.put(Key_Phone, Phone);
args.put(Key_Home, home);
return db.update(Places_Table, args, Key_ID +"="+ rowId, null)>0;
}
public Cursor fetchRow(long rowId) throws SQLException{
Cursor result = db.query( Places_Table, null,
Key_ID + "=" + rowId, null, null, null,null);
if ((result.equals(rowId)) || !result.isFirst()) {
throw new SQLException("No note matching ID: " + rowId);
}
return result;
}
public Cursor fetchAllRows(){
Log.d("Your Location4", "ok99:");
return db.query(Places_Table, PROJECTION,
null, null, null, null, null);
}
}
替换
Key_Home + " TEXT,");
与
有一个,
,因此需要进一步的列规范,但没有后续内容,因此需要使用)终止表规范。
此外,您不应该在数据库帮助程序onCreate()
中捕获SQLiteException
。当onCreate()
正常返回时,将假定数据库创建成功
解决问题后,卸载应用程序,以便删除旧的、不正确的数据库文件,并再次运行onCreate()
另外,在您的open()
中,您似乎自己调用了onCreate()
。不要这样做。get{Read,write}ableDatabase()
将在需要时为您执行。Replace
Key_Home + " TEXT,");
与
有一个,
,因此需要进一步的列规范,但没有后续内容,因此需要使用)终止表规范。
此外,您不应该在数据库帮助程序onCreate()
中捕获SQLiteException
。当onCreate()
正常返回时,将假定数据库创建成功
解决问题后,卸载应用程序,以便删除旧的、不正确的数据库文件,并再次运行onCreate()
另外,在您的open()
中,您似乎自己调用了onCreate()
。不要这样做。get{Read,write}ableDatabase()
将在需要时为您执行。Replace
Key_Home + " TEXT,");
与
有一个,
,因此需要进一步的列规范,但没有后续内容,因此需要使用)终止表规范。
此外,您不应该在数据库帮助程序onCreate()
中捕获SQLiteException
。当onCreate()
正常返回时,将假定数据库创建成功
解决问题后,卸载应用程序,以便删除旧的、不正确的数据库文件,并再次运行onCreate()
另外,在您的open()
中,您似乎自己调用了onCreate()
。不要这样做。get{Read,write}ableDatabase()
将在需要时为您执行。Replace
Key_Home + " TEXT,");
与
有一个,
,因此需要进一步的列规范,但没有后续内容,因此需要使用)终止表规范。
此外,您不应该在数据库帮助程序onCreate()
中捕获SQLiteException
。当onCreate()
正常返回时,将假定数据库创建成功
解决问题后,卸载应用程序,以便删除旧的、不正确的数据库文件,并再次运行onCreate()
另外,在您的open()
中,您似乎自己调用了onCreate()
。不要这样做。get{Read,write}ableDatabase()
将在需要时为您执行。您并没有关闭SQL语句。例如:
这:
应该是:
db.execSQL("CREATE TABLE " + Places_Table + "(" +
Key_ID + " INT PRIMARY KEY NOT NULL," +
Key_Name + " TEXT NOT NULL," +
Key_Phone + " TEXT NOT NULL," +
Key_Address + " TEXT NOT NULL," +
Key_Website + " TEXT," +
Key_Home + " TEXT)");
这将关闭create table语句。由于逗号,它需要另一个参数。您没有关闭SQL语句。例如:
这:
应该是:
db.execSQL("CREATE TABLE " + Places_Table + "(" +
Key_ID + " INT PRIMARY KEY NOT NULL," +
Key_Name + " TEXT NOT NULL," +
Key_Phone + " TEXT NOT NULL," +
Key_Address + " TEXT NOT NULL," +
Key_Website + " TEXT," +
Key_Home + " TEXT)");
这将关闭create table语句。由于逗号,它需要另一个参数。您没有关闭SQL语句。例如:
这:
应该是:
db.execSQL("CREATE TABLE " + Places_Table + "(" +
Key_ID + " INT PRIMARY KEY NOT NULL," +
Key_Name + " TEXT NOT NULL," +
Key_Phone + " TEXT NOT NULL," +
Key_Address + " TEXT NOT NULL," +
Key_Website + " TEXT," +
Key_Home + " TEXT)");
这将关闭create table语句。由于逗号,它需要另一个参数。您没有关闭SQL语句。例如:
这:
应该是:
db.execSQL("CREATE TABLE " + Places_Table + "(" +
Key_ID + " INT PRIMARY KEY NOT NULL," +
Key_Name + " TEXT NOT NULL," +
Key_Phone + " TEXT NOT NULL," +
Key_Address + " TEXT NOT NULL," +
Key_Website + " TEXT," +
Key_Home + " TEXT)");
这将关闭create table语句。由于逗号的原因,它需要另一个参数。“java.lang.IllegalStateException:数据库未打开”可能是一个线索。您可能希望使用not INT but。“java.lang.IllegalStateException:数据库未打开”可能是一个线索。您可能希望使用not INT but“java.lang.IllegalStateException:数据库未打开”可能是一个线索。您可能希望使用not INT but。“java.lang.IllegalStateException:数据库未打开”可能是一个线索。您可能希望使用not INT but.Hi Laalto这对我很有帮助,但locat给了我另一个错误“java.lang.RuntimeException:无法启动活动组件信息”{com.webpreneur_contactlist/com.webpreneur_contactlist.WebpreneurActivity}:java.lang.IllegalStateException:数据库未打开,请帮助我,非常感谢您的指导。在抛出异常时,请检查代码中的堆栈跟踪。您好,这对我很有帮助,但请告诉我另一个错误“java.lang.RuntimeException:无法启动活动组件信息{com.webpreneur\u contactlist/com.webpreneur\u contactlist.WebpreneurActivity}”:java.lang.IllegalStateException:数据库未打开,请帮助我,您的指导将不胜感激。在引发异常时,请检查您在代码中的堆栈跟踪位置。Hi-Laalto这对我很有帮助,但可能会给我另一个错误“java.lang.RuntimeException:无法启动ac”