2012-05-31 141 views
1

我已經使用下面的代碼來創建表並將數據插入到表中。代碼僅在select語句位於同一文件內時顯示數據。我注意到/ data/data中沒有數據庫。我錯過了一些東西,或者這個過程實際上是錯誤的?如果錯了,我該怎麼辦?Android:不創建SQLite數據庫

surgicalmstDB = this.openOrCreateDatabase("surgicalmstDB ", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
     surgicalmstDB.setVersion(1); 
     surgicalmstDB.setLocale(Locale.getDefault()); 
     surgicalmstDB.setLockingEnabled(true); 
     surgicalmstDB.execSQL("CREATE TABLE IF NOT EXISTS " + 
       " instrument " + 
       " (id int,instrumnt TEXT, category TEXT, details TEXT);"); 

surgicalmstDB.execSQL("INSERT INTO " + 
       "instrument" + 
       " Values (2,'#3 Long Knife Handle ','Cutting and dissecting','Used to cut deeper tissue.');"); 

//----------------------------------------------------------------- 
String query="SELECT * from instrument WHERE id=2"; 
       Cursor cursor=surgicalmstDB.rawQuery(query, null); 
       while (cursor.moveToNext()) { 
        String title =cursor.getString(cursor 
          .getColumnIndex("instrumnt")); 
        String author= cursor.getString(cursor 
          .getColumnIndex("category")); 
        String price= cursor.getString(cursor 
          .getColumnIndex("details")); 
         txt.setText(title+"-----"+author+"-------"+price); 
        } 
        cursor.close(); 
        surgicalmstDB.close(); 
+0

你在模擬器嘗試? – Lucifer

+0

是的,我試圖在模擬器。 – Moyeen

+0

所以當你檢查/ data/data /目錄時,你可能已經關閉了你的模擬器,我建議你讓模擬器打開然後檢查它。 – Lucifer

回答

1

我建議你引用SQLiteOpenHelper而不是硬編碼查詢。

下面的代碼將幫助您

員工模型類

package com.database; 

public class Employee { 


    int _id; 
    String _name; 
    String _phone_number; 


    public Employee(){ 

    } 
    // constructor 
    public Employee (int id, String name, String _phone_number){ 
     this._id = id; 
     this._name = name; 
     this._phone_number = _phone_number; 
    } 

    // constructor 
    public Employee (String name, String _phone_number){ 
     this._name = name; 
     this._phone_number = _phone_number; 
    } 
    // getting ID 
    public int getID(){ 
     return this._id; 
    } 

    // setting id 
    public void setID(int id){ 
     this._id = id; 
    } 

    // getting name 
    public String getName(){ 
     return this._name; 
    } 

    // setting name 
    public void setName(String name){ 
     this._name = name; 
    } 

    // getting phone number 
    public String getPhoneNumber(){ 
     return this._phone_number; 
    } 

    // setting phone number 
    public void setPhoneNumber(String phone_number){ 
     this._phone_number = phone_number; 
    } 
} 

SQLite的助手類

公共類DatabaseHelper擴展SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1; 

    private static final String DATABASE_NAME = "employeeDB"; 


    private static final String TABLE_EMPLOYEE = "employee"; 


private static final String KEY_ID = "id"; 
private static final String KEY_NAME = "name"; 
private static final String KEY_PH_NO = "phone_number"; 

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

// Creating Tables 
@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_EMPLOYEE + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " 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); 
} 

CRUD操作

// 添加新員工

public void addEmployee(Employee employee) {} 

// 獲得一個員工

public Contact getEmployee(int id) {} 

// 讓所有員工

public List<Employee> getAllEmployees() {} 

// 獲取僱員計數

public int getEmployeesCount() {} 

// 更新單個僱員

public int updateEmployee(Employee employee) {} 

// 刪除單個僱員

public void deleteEmployee(Employee employee) {} 

插入新記錄

public void addemployee(Employee employee) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, employee.getName()); 
    values.put(KEY_PH_NO, employee.getPhoneNumber()); 
    db.insert(TABLE_EMPLOYEE, null, values); 
    db.close(); 
} 

讀行(S)

public Contact getEmployee(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.query(TABLE_EMPLOYEE, 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(); 

    Employee employee= new Employee(Integer.parseInt(cursor.getString(0)), 
      cursor.getString(1), cursor.getString(2)); 

    return employee; 
} 

讓所有員工

public List<Contact> getAllEmployees() { 
    List<Employee> employeeList = new ArrayList<Employee>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_EMPLOYEE; 

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

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Employee employee= new Employee(); 
      employee.setID(Integer.parseInt(cursor.getString(0))); 
      employee.setName(cursor.getString(1)); 
      employee.setPhoneNumber(cursor.getString(2)); 

      employeeList.add(employee); 
     } while (cursor.moveToNext()); 
    } 

     return employeeList; 
} 

讓所有員工數

public int getEmployeesCount() { 
     String countQuery = "SELECT * FROM " + TABLE_EMPLOYEE; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(countQuery, null); 
     cursor.close(); 

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

更新記錄

public int updateEmployee(Employee employee) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, employee.getName()); 
    values.put(KEY_PH_NO, employee.getPhoneNumber()); 

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

刪除記錄

public void deleteEmployee(Employee employee) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_EMPLOYEE, KEY_ID + " = ?", 
      new String[] { String.valueOf(employee.getID()) }); 
    db.close(); 
}