android SQLite数据库做完了以后程序运行不了,把有关数据库所有东西删了以后就可以运行

如题所述

那是你的数据库出了问题。本人创作的这个数据库类可以较好地解决这个问题。
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

//"SELECT * FROM PhoneBook WHERE Name1 LIKE '" & strCase & "' OR Phone LIKE '" & strCase & "' ORDER BY ID"
public class DatabaseHelper extends SQLiteOpenHelper {
// TEXT, INTEGER, REAL
private String strTableName;
private String strCreateDb;
private SQLiteDatabase dbRead=null, dbWrite=null;
private Cursor rowRecords = null;

public DatabaseHelper(Context context, String strDbName, CursorFactory factory, int nVersion) {
super(context, strDbName, factory, nVersion);
// TODO Auto-generated constructor stub
}

public DatabaseHelper(Context context, String strDbName, int nVersion, String strTableName, String strFields) {
// context, strDbName, nVersion, strTableName, strFields
this(context, strDbName, null, nVersion);
// TODO Auto-generated constructor stub
this.strTableName = strTableName;
strCreateDb = "CREATE TABLE " + strTableName + "(" + strFields + ")";
}

/* public DatabaseHelper(Context context){
this(context, "dbService", 1, "services",
"_num INTEGER DEFAULT 0, " +
"_unit TEXT PRIMARY KEY, " +
"_service TEXT NOT NULL, " +
"_no TEXT NULL, " +
"_date TEXT NULL, " +
"_address TEXT NULL, " +
"_remark TEXT NULL");
}*/

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(strCreateDb);
}

public void refreshReadDB(String strQuery){
dbRead = getReadableDatabase();
rowRecords = dbRead.rawQuery(strQuery, null);
}

public Cursor getRecords(){
return rowRecords;
}

public void updateRecords(ContentValues cv, String whereClause){
// whereClause: "_unit = '" + strTmp + "'"
if(dbWrite==null) dbWrite = getWritableDatabase();
dbWrite.update(strTableName, cv, whereClause, null);
}

public void deleteRecords(String whereClause){
if(dbWrite==null) dbWrite = getWritableDatabase();
dbWrite.delete(strTableName, whereClause, null);
}

public void insertRecords(ContentValues cv){
if(dbWrite==null) dbWrite = getWritableDatabase();
dbWrite.insert(strTableName, null, cv);
}

public int getCount(){
if(rowRecords!=null)
return rowRecords.getCount();
else
return 0;
}

public boolean isNewStringItem(String strItemName, String strItem){
// this will change rowRecords, please reset...
String strQuery = "SELECT * FROM " + strTableName + " WHERE " +
strItemName + " = '" + strItem + "'";
refreshReadDB(strQuery);
int nLen = getCount();
if(nLen == 0)
return true;
else
return false;
}

public boolean isNewStringItem(String strItemName1, String strItem,
String strItemName2, int nItem){
// this will change rowRecords, please reset...
String strQuery = "SELECT * FROM " + strTableName + " WHERE " +
strItemName1 + " = '" + strItem + "' AND " +
strItemName2 + " = " + Integer.toString(nItem);
refreshReadDB(strQuery);
int nLen = getCount();
if(nLen == 0)
return true;
else
return false;
}

public void normalizeNumber(String orderName, String strConditionName){
// orderName is not primary key
refreshReadDB("SELECT * FROM " + strTableName + " ORDER BY " + orderName);
if(getCount() == 0) return;
rowRecords.moveToFirst();
for(int i=0; i<getCount(); i++){
ContentValues cv = new ContentValues();
cv.put(orderName, i+1);
updateRecords(cv, strConditionName + " = '" +
rowRecords.getString(rowRecords.getColumnIndex(strConditionName)) + "'");
rowRecords.moveToNext();
}
}

@Override
public synchronized void close() {
// TODO Auto-generated method stub
if(dbWrite != null) dbWrite.close();
if(rowRecords != null) rowRecords.close();
if(dbRead!=null) dbRead.close();
super.close();
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + strTableName); //EXISTS
onCreate(db);
}

public static String getGeneralQuery(String strQuery){
if(strQuery.isEmpty()) return "";
String strResult="";
char[] chArr = strQuery.toCharArray();
int nLen = chArr.length;
for(int i=0; i<nLen; i++){
strResult += String.valueOf(chArr[i]);
if(i<nLen-1) strResult += "%";
}
return "%" + strResult + "%";
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答