2012-03-06 8 views
1

1つのDBで2つのテーブルを使用しているときに問題が発生しました。 SINGLE DBで複数のテーブルを使用して私を助けてください。複数のテーブルを1つのANDROID DB名に作成する際にエラーが発生しました

ここでは、同じDB名のProperty &という2つのテーブルがあります。

property.class

public class PropertyDb { 
    public static final String KEY_ADDRESS = "address"; 
    public static final String KEY_APT = " apt_no"; 
    public static final String KEY_CITY = "city"; 
    public static final String KEY_STATE = "state"; 
    public static final String KEY_COUNTY = "county"; 
    public static final String KEY_ZIPCODE = "zipcode"; 
    public static final String KEY_PROPERTY_VALUE = "property_value"; 
    public static final String KEY_PROPERTY_TYPE = "property_type"; 
    public static final String KEY_ROWID = "_id"; 
    private static final String TAG = "GetRateDb"; 
    private DatabaseHelper mDbHelper; 
    private SQLiteDatabase mDb; 
    private static final String TABLE_CREATE = 
      "create table if not exists property(_id integer primary key autoincrement," 
      +"address varchar(50) not null, apt_no varchar(50), city varchar(50) not null," 
      +"state varchar(50), county varchar(50), zipcode varchar(50) ," 
      +"property_value varchar(50) not null, property_type varchar(50));"; 

    private static final String DATABASE_NAME = "testDB"; 
    private static final String DATABASE_TABLE = "property"; 
    private static final int DATABASE_VERSION = 1; 
    private final Context mCtx; 

    private static class DatabaseHelper extends SQLiteOpenHelper { 
     DatabaseHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL(TABLE_CREATE); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
        + newVersion + ", which will destroy all old data"); 
      db.execSQL("DROP TABLE IF EXISTS docdetails"); 
      onCreate(db); 
     } 
    } 

    public PropertyDb(Context ctx) { 
     this.mCtx = ctx; 
    } 

    public PropertyDb open() throws SQLException { 
     mDbHelper = new DatabaseHelper(mCtx); 
     mDb = mDbHelper.getWritableDatabase(); 
    // mDb = mDbHelper.getReadableDatabase(); 
     return this; 
    } 

    public void close() { 
     mDbHelper.close(); 
    } 

    public long createdetails(String address, String apt_no, 
      String city, String state, String county,String zipcode, String property_value, 
      String property_type) { 
     ContentValues initialValues = new ContentValues(); 
     initialValues.put(KEY_ADDRESS, address); 
     initialValues.put(KEY_APT,apt_no); 
     initialValues.put(KEY_CITY, city); 
     initialValues.put(KEY_STATE, state); 
     initialValues.put(KEY_COUNTY, county); 
     initialValues.put(KEY_ZIPCODE, zipcode); 
     initialValues.put(KEY_PROPERTY_VALUE, property_value); 
     initialValues.put(KEY_PROPERTY_TYPE, property_type); 
     return mDb.insert(DATABASE_TABLE, null, initialValues); 
    } 

    public boolean deletedetails(long rowId) { 
     return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; 
    } 

    public Cursor fetchAlldetails() 
    { 
     Cursor mCursor = mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_ADDRESS, KEY_APT, 
       KEY_CITY, KEY_STATE, KEY_COUNTY, KEY_ZIPCODE , KEY_PROPERTY_VALUE, 
       KEY_PROPERTY_TYPE } , null, null, null, null, null); 
     if (mCursor != null) 
     { 
      mCursor.moveToFirst(); 
     } 
     mDbHelper.close(); 
     return mCursor; 
    } 

    public Cursor fetchdetails(long rowId) throws SQLException { 
     Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] { KEY_ADDRESS, KEY_APT, 
       KEY_CITY, KEY_STATE, KEY_COUNTY, KEY_ZIPCODE , KEY_PROPERTY_VALUE, 
       KEY_PROPERTY_TYPE},KEY_ROWID + "=" + rowId, null,null, null, null, null); 
     if (mCursor != null) 
     { 
      mCursor.moveToFirst(); 
     } 
     return mCursor; 
    } 

    public boolean updatedetails(long rowId, String address, String apt_no,String city, String state, String county, 
      String zipcode, String property_value,String property_type) 
    { 
     ContentValues args = new ContentValues(); 
     args.put(KEY_ROWID, rowId); 
     System.out.println("Key RowId ---- "+rowId); 
     args.put(KEY_ADDRESS, address); 
     System.out.println("address in property--- "+address); 
     args.put(KEY_APT, apt_no); 
     System.out.println("apt_no --- "+apt_no); 
     args.put(KEY_CITY, city); 
     args.put(KEY_STATE, state); 
     args.put(KEY_COUNTY, county); 
     args.put(KEY_ZIPCODE, zipcode); 
     args.put(KEY_PROPERTY_VALUE, property_value); 
     args.put(KEY_PROPERTY_TYPE, property_type); 
     int i = mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null); 
     System.out.println("update---" +i); 
     return i > 0; 
    } 
} 

「私は別のテーブル quote.class

public class QuoteDb { 
public static final String KEY_TARGET_RATE = "targetRate"; 
public static final String KEY_LOAN_TERM = "loanTerm"; 
public static final String KEY_LOAN_AMOUNT = "loanAmount"; 
public static final String KEY_SELECT_PROPERTY = "selectProperty"; 
public static final String KEY_PROPERTY_VALUE = "propertyValue"; 
public static final String KEY_PROPERTY_TYPE = "propertyType"; 
public static final String KEY_ADDRESS = "Address"; 
public static final String KEY_CITY = "City"; 
public static final String KEY_STATE = "State"; 
public static final String KEY_COUNTY = "County"; 
public static final String KEY_ZIPCODE = "Zipcode"; 
public static final String KEY_ROWID = "_id"; 
private static final String TAG = "GetRateDbQuote"; 
private DatabaseHelper mDbHelper; 
private SQLiteDatabase mDb; 

//Create the Table 
private static final String TABLE_CREATE = 
     "create table quotenew (_id integer primary key autoincrement," 
       +"targetRate varchar(50) not null, loanTerm integer not null, loanAmount varchar(50) not null," 
       +"selectProperty varchar(50) , propertyValue varchar(50) not null, propertyType integer not null," 
       +"Address varchar(50) , City varchar(50) , State varchar(50) not null," 
       +"County varchar(50) not null, Zipcode varchar(50));";  

private static final String DATABASE_NAME = "testDB"; 
private static final String DATABASE_TABLE = "quotenew";  
private static final int DATABASE_VERSION = 1; 
private final Context mCtx; 


// A helper class to manage database creation and version management 
private static class DatabaseHelper extends SQLiteOpenHelper { 
    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    //The onCreate() method is called by the Android system when your Activity starts 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(TABLE_CREATE); 
    } 

    //Called when the database needs to be upgraded. 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS quotenew"); 
     onCreate(db); 
    } 

} 

public QuoteDb(Context ctx) { 
    this.mCtx = ctx; 
} 

//open the DB 
public QuoteDb open() throws SQLException { 
    mDbHelper = new DatabaseHelper(mCtx); 
    mDb = mDbHelper.getWritableDatabase(); 
    //mDb = mDbHelper.getReadableDatabase(); 
    return this; 
} 

//close the DB 
public void close() { 
    mDbHelper.close(); 
} 

//inserting the values 
public long createdetails(String targetRate, String loanTerm,String loanAmount, String selectProperty, 
     String propertyValue,String propertyType, String Address,String City,String State,String County, 
     String Zipcode) { 

    ContentValues initialValues = new ContentValues(); 

    initialValues.put(KEY_TARGET_RATE, targetRate); 
    System.out.println("target Rate in DB--"+targetRate); 

    initialValues.put(KEY_LOAN_TERM, loanTerm); 
    initialValues.put(KEY_LOAN_AMOUNT, loanAmount); 
    System.out.println("loan amount in DB--"+loanAmount); 

    initialValues.put(KEY_SELECT_PROPERTY, selectProperty); 
    initialValues.put(KEY_PROPERTY_VALUE, propertyValue); 
    System.out.println("property value in DB-- "+propertyValue); 

    initialValues.put(KEY_PROPERTY_TYPE, propertyType); 
    initialValues.put(KEY_ADDRESS, Address); 
    initialValues.put(KEY_CITY, City); 
    initialValues.put(KEY_STATE, State); 
    initialValues.put(KEY_COUNTY, County); 
    initialValues.put(KEY_ZIPCODE, Zipcode); 
    return mDb.insert(DATABASE_TABLE, null, initialValues); 
} 

//delete operation 
public boolean deletedetails(long rowId) { 
    return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; 
} 

public Cursor fetchAlldetails() 
{ 
    Cursor mCursor = mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_TARGET_RATE, KEY_LOAN_TERM, 
      KEY_LOAN_AMOUNT, KEY_SELECT_PROPERTY, KEY_PROPERTY_VALUE, KEY_PROPERTY_TYPE , KEY_ADDRESS, 
      KEY_CITY ,KEY_STATE,KEY_COUNTY,KEY_ZIPCODE} , null, null, null, null, null); 

    if (mCursor != null) 
    { 
     mCursor.moveToFirst(); 
    } 
    mDbHelper.close(); 
    return mCursor; 
} 

public Cursor fetchdetails(long rowId) throws SQLException { 
    Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] { KEY_TARGET_RATE, KEY_LOAN_TERM, 
      KEY_LOAN_AMOUNT, KEY_SELECT_PROPERTY, KEY_PROPERTY_VALUE, KEY_PROPERTY_TYPE , KEY_ADDRESS, 
      KEY_CITY ,KEY_STATE,KEY_COUNTY,KEY_ZIPCODE},KEY_ROWID + " = " + rowId, null,null, null, null, null); 
    if (mCursor != null) 
    { 
     mCursor.moveToFirst(); 
    } 
    mDbHelper.close(); 
    return mCursor; 
} 

//updating the values 
public boolean updatedetails(long rowId, String targetRate, String loanTerm,String loanAmount, String selectProperty, 
     String propertyValue,String propertyType, String Address,String City,String County,String State, 
     String Zipcode) 
{ 
    System.out.println("I am in update QUOTEDB"); 
    ContentValues args = new ContentValues(); 
    args.put(KEY_ROWID, rowId); 
    System.out.println("key rowID-- "+rowId); 
    args.put(KEY_TARGET_RATE, Integer.parseInt(targetRate)); 
    System.out.println("target rate in update" +targetRate); 
    args.put(KEY_LOAN_TERM, Integer.parseInt(loanTerm)); 
    args.put(KEY_LOAN_AMOUNT, Integer.parseInt(loanAmount)); 
    args.put(KEY_SELECT_PROPERTY, selectProperty); 
    args.put(KEY_PROPERTY_VALUE, Integer.parseInt(propertyValue)); 
    args.put(KEY_PROPERTY_TYPE, propertyType); 
    args.put(KEY_ADDRESS, Address); 
    args.put(KEY_CITY, City); 
    args.put(KEY_STATE, State); 
    args.put(KEY_COUNTY, County); 
    System.out.println("county in update --" +County); 
    args.put(KEY_ZIPCODE, Zipcode); 
    int i = mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null); 
    System.out.println("update---" +i); 
    return i>0;// mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; 

} 
} 

私は

エラーを取得しています持っている

:テーブルquotenewを見つけることができませんにとプロパティ。

答えて

1
You should create multiple tables in single db name in this fashion: 


public class EventDataSQLHelper extends SQLiteOpenHelper{ 
    private static final String DATABASE_NAME = "My_moodledata1.sqlite"; 
    private static final int DATABASE_VERSION = 1; 

    public EventDataSQLHelper(Context context) { 
     super(context,DATABASE_NAME, null,DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     final String CREATE_TABLE_SITEINFO = 
       "CREATE TABLE siteinfo(id INTEGER PRIMARY KEY AUTOINCREMENT,sitename TEXT,username TEXT,firstname TEXT,lastname TEXT,fullname TEXT,userid TEXT,siteurl TEXT, userpictureurl TEXT,userpassword TEXT,photo BLOB);"; 
      db.execSQL(CREATE_TABLE_SITEINFO); 
      final String CREATE_TABLE_SYNCHRONISE = 
        "CREATE TABLE synchronise(id INTEGER PRIMARY KEY AUTOINCREMENT ,filetype TEXT, filepath TEXT,link TEXT,datetime Text);"; 
      db.execSQL(CREATE_TABLE_SYNCHRONISE); 
      final String CREATE_TABLE_COURSEINFO = 
        "CREATE TABLE courseinfo(id INTEGER PRIMARY KEY AUTOINCREMENT ,courseid TEXT, shortname TEXT,fullname TEXT,userid Text,sitename TEXT);"; 
      db.execSQL(CREATE_TABLE_COURSEINFO); 
      final String CREATE_TABLE_PARTICIPANTINFO = 
        "CREATE TABLE participantinfo(id INTEGER PRIMARY KEY AUTOINCREMENT ,courseid TEXT,userid Text,participantid TEXT ,fullname TEXT,email Text,description TEXT,city TEXT,country TEXT,imagesmall TEXT,imagelong TEXT,smallphoto BLOB,largephoto BLOB);"; 
      db.execSQL(CREATE_TABLE_PARTICIPANTINFO); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 

    } 

} 
ありがとう
関連する問題