Я нахожусь в рабочем списке контактов для Android, я только начал разработку на платформе Android. В моем приложении-контакте мне нужно создать таблицу базы данных sqlite для хранения контактов, с которыми я сталкиваюсь с трудностями при создании база данных sqlite дает мне ошибку в моем окне logcat, например: «Logcat показать эту ошибку» sqlite возвращен: код ошибки = 1, msg = near »,« Синтаксическая ошибка «Ошибка 1 (около«, »: синтаксическая ошибка) на 0x1f14d0 при подготовке 'CREATE TABLE Places (ID INT PRIMARY KEY NOT NULL, Name TEXT NOT NULL, ТЕКСТ ТЕЛЕФОНА НЕ НУЛЛ, ТЕКСТ ТЕЛЕФОНА НЕ НУЛЛ, ТЕКСТ ТЕКСТА, ДОМАШНЮЮ ТЕКСТУ НЕ НУЛЛ,' FATAL EXCEPTION: main "java.lang. RuntimeException: невозможно запустить Activity ComponentInfo {com.webpreneur_contactlist/com.webpreneur_contactlist.WebpreneurActivity}: java.lang.IllegalStateException: база данных не открывается " пожалуйста, помогите мнеОшибка при создании базы данных sqlite, дающей синтаксическую ошибку
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);
}
}
"java.lang.IllegalStateException: database not open" может быть ключом. – Nick
Вероятно, вы хотите использовать не INT, а [INTEGER] (http://www.sqlite.org/lang_createtable.html#rowid). –