微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – SQLiteDatabase getWritableDatabase()无法正常工作

我收到了错误

02-15 08:36:13.097: I/sqliteDatabaseCpp(404): sqlite returned: error
code = 1, msg = near “null”: Syntax error,
db=/data/data/com.lifeApp/databases/contactsManager

在我的代码的第157行.这是该方法下的部分

getAllContacts()

无效的代码

sqliteDatabase db = this.getWritableDatabase();

完整示例:

package com.lifeApp;

import android.content.Context;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.database.Cursor;

public class DatabaseHandler extends sqliteOpenHelper {

   // All Static variables
   // Database Version
   private static final int DATABASE_VERSION = 1;

   // Database Name
   private static final String DATABASE_NAME = "contactsManager";

   // Contacts table name
   private static final String TABLE_CONTACTS = "contacts";

   // Contacts Table Columns names
   private static final String KEY_ID = "id";
   private static final String FirsTNAME = "firstname";
   private static final String LASTNAME = "lastname";
   private static final String PASSWORD = "password";
   private static final String EMAIL = "email";

   private static final String KEY_PH_NO = "phone_number";

private static final String KEY_NAME = null;

   public DatabaseHandler(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }

   // Creating Tables
   @Override
   public void onCreate(sqliteDatabase db) {

       String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
               + KEY_ID + " INTEGER PRIMARY KEY," 
               + KEY_NAME + " TEXT,"
               + FirsTNAME + " TEXT,"
               + LASTNAME + " TEXT,"
               + PASSWORD  + " TEXT"
               + EMAIL + " TEXT"
               + KEY_PH_NO + " TEXT" + ")";
       db.execsql(CREATE_CONTACTS_TABLE);
   }

   // Upgrading database
   @Override
   public void onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {
       // Drop older table if existed
       db.execsql("DROP TABLE IF EXISTS " + TABLE_CONTACTS);

       // Create tables again
       onCreate(db);
   }

   /**
    * All CRUD(Create, Read, Update, Delete) Operations
    */

   // Adding new contact
   void addContact(Contact contact) {
       sqliteDatabase db = this.getWritableDatabase();

       ContentValues values = new ContentValues();
       values.put(KEY_NAME, contact.getName()); // Contact Name
       values.put(FirsTNAME, contact.getFirstname());
       values.put(LASTNAME, contact.getLastname());
       values.put(EMAIL, contact.getEmail());
       values.put(PASSWORD, contact.@R_404_4400@word());
       values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone

       // Inserting Row
       db.insert(TABLE_CONTACTS, null, values);
       db.close(); // Closing database connection
   }

   // Getting single contact
   Contact getContact(int id) {
       sqliteDatabase db = this.getReadableDatabase();

       Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
               KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
               new String[] { String.valueOf(id) },null,null,null,null);
       if (cursor != null)
           cursor.movetoFirst();

       Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
               cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6));
       // return contact
       return contact;
   }

   // Getting All Contacts
   public List<Contact> getAllContacts() {
       List<Contact> contactList = new ArrayList<Contact>();
       // Select All Query
       String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

       sqliteDatabase db = this.getWritableDatabase();
       Cursor cursor = db.rawQuery(selectQuery, null);

       // looping through all rows and adding to list
       if (cursor.movetoFirst()) {
           do {
               Contact contact = new Contact();
               contact.setID(Integer.parseInt(cursor.getString(0)));
               contact.setFirstname(cursor.getString(1));
               contact.setLastname(cursor.getString(2));
               contact.setPassword(cursor.getString(3));
               contact.setEmail(cursor.getString(4));
               // Adding contact to list
               contactList.add(contact);
           } while (cursor.movetoNext());
       }

       // return contact list
       return contactList;
   }

   // Updating single contact
   public int updateContact(Contact contact) {
       sqliteDatabase db = this.getWritableDatabase();

       ContentValues values = new ContentValues();
       values.put(KEY_NAME, contact.getName());
       values.put(FirsTNAME, contact.getFirstname());
       values.put(LASTNAME, contact.getLastname());
       values.put(PASSWORD, contact.@R_404_4400@word());
       values.put(EMAIL, contact.getEmail());
       values.put(KEY_PH_NO, contact.getPhoneNumber());

       // updating row
       return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
               new String[] { String.valueOf(contact.getID()) });
   }

   // Deleting single contact
   public void deleteContact(Contact contact) {
       sqliteDatabase db = this.getWritableDatabase();
       db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
               new String[] { String.valueOf(contact.getID()) });
       db.close();
   }

   // Getting contacts Count
   public int getContactsCount() {
       String countQuery = "SELECT  * FROM " + TABLE_CONTACTS;
       sqliteDatabase db = this.getReadableDatabase();
       Cursor cursor = db.rawQuery(countQuery, null);
       cursor.close();

       // return count
       return cursor.getCount();
   }

}

解决方法:

在CREATE_CONTACTS_TABLE中,您会遗漏一些逗号

   String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
           + KEY_ID + " INTEGER PRIMARY KEY," 
           + KEY_NAME + " TEXT,"
           + FirsTNAME + " TEXT,"
           + LASTNAME + " TEXT,"
           + PASSWORD  + " TEXT"           <==
           + EMAIL + " TEXT"               <==
           + KEY_PH_NO + " TEXT" + ")";
   db.execsql(CREATE_CONTACTS_TABLE);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐