当前位置: 首页 > 面试题库 >

如何在Android应用程序的单个数据库中创建两个表?

洪博艺
2023-03-14
问题内容

我已经在Sqllite Android应用程序中创建了一个数据库,并尝试在数据库中添加两个表,但是在创建该数据库时遇到了问题。仅创建第一张表。有谁能够帮我?

    package com.android.cdtech;

    import java.sql.SQLException;

    import android.content.ContentValues;
  import android.content.Context;
import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.util.Log;

  public class saveData {
 public static final String KEY_ROWID = "rowid"; public static final String KEY_DATE = "Date";public static final String KEY_NAME = "CustomerName";public static final String KEY_AMOUNT = "Amount";public static final String KEY_BANK = "Banks";
 private static final String TAG = "DBAdapter";
 public static final String KEY_BUSNAME="BusinessName";public static final String KEY_ADD="Address";public static final String KEY_CPERSON="ContactPerson";;
 private static final String DATABASE_NAME = "EXPORTDETAILS";
 private static final String DATABASE_TABLE = "Payment";
 private static final String DATABASE_TABLE2 = "Customer";
 private static final int DATABASE_VERSION = 1;
 private static  String DATABASE_CREATE =
"create table Payment (_id integer primary key autoincrement, "
+ "Date text not null,"+"CustomerName text not null,"+"Amount text not null,"+"Banks text not null);";

 private static final String DATABASE_CREATECUS =
            "create table Customer (_id integer primary key autoincrement, "
            + "BusinessName text not null,"+"Address text not null,"+"ContactPerson text not null,"+"PhoneNumber text not null,);";
 private final Context context;  
 private DatabaseHelper DBHelper;
 private SQLiteDatabase db;



    public saveData(Context ctx) 
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }
    private static class DatabaseHelper extends SQLiteOpenHelper 
    {
        DatabaseHelper(Context context) 
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

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

        @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 titles");
            onCreate(db);
        }
    }    
public saveData open()throws SQLException
{
    db=DBHelper.getWritableDatabase();
    return this;
}
public void close()
{
    DBHelper.close();
}

    public long insert(String Date,String CustomerName,String Amount,String Banks) {
    // TODO Auto-generated method stub
     ContentValues cv=new ContentValues();
     cv.put(KEY_DATE,Date);
     cv.put(KEY_NAME,CustomerName);
     cv.put(KEY_AMOUNT,Amount);
     cv.put(KEY_BANK,Banks);
     return db.insert(DATABASE_TABLE, null,cv);
}   
    public long insertForm(String BusinessName ,String Address ,String ContactPerson) {
        // TODO Auto-generated method stub
         ContentValues cv=new ContentValues();
         cv.put(KEY_BUSNAME,BusinessName);
         cv.put(KEY_ADD,Address);
         cv.put(KEY_CPERSON,ContactPerson);
    }
    public Cursor getlatlng()
     {
        Cursor latlngCursor = db.rawQuery("select * from " + DATABASE_TABLE,null);
         if (latlngCursor != null) 
         {
             latlngCursor.moveToFirst();
         }
         db.close();
        return latlngCursor;
     }
    public Cursor order()
     {
        Cursor latlngCursor = db.rawQuery("select * from " + DATABASE_TABLE2,null);
         if (latlngCursor != null) 
         {
             latlngCursor.moveToFirst();
         }
         db.close();
        return latlngCursor;
     }
}

错误代码= 1否为客户提供此类表格


问题答案:
use below two class

package Your 'packagename';


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;


public class DBHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "BistroDB";

    private static final int DATABASE_VERSION =1;

    // Database creation sql statement
    public static final String Table1= "create table table1name ("Your cloumns");";


    public static final String Table2 = "create table table2name ("Your cloumns");";




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

    // Method is called during creation of the database
    @Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(table1);
       database.execSQL(table2);

    }

    // Method is called during an upgrade of the database, e.g. if you increase
    // the database version
    @Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion,
            int newVersion) {
        Log.w(DBHelper.class.getName(),
                "Upgrading database from version " + oldVersion + " to "
                        + newVersion + ", which will destroy all old data");
        database.execSQL("DROP TABLE IF EXISTS table1");
        database.execSQL("DROP TABLE IF EXISTS table2");

        onCreate(database);
    }


        public boolean deleteDatabase(Context context) {
            return context.deleteDatabase(DATABASE_NAME);
        }

}

使用下面的类将值插入表

  package 'Your package name';



    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;

    public class DataBaseAdapter {

        // Database fields

        private Context context;
        private SQLiteDatabase database;
        private DBHelper dbHelper;

        public DataBaseAdapter(Context context) {
            this.context = context;
        }

        public DataBaseAdapter open() throws SQLException {
            dbHelper = new DBHelper(context);
            database = dbHelper.getWritableDatabase();
            return this;
        }

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


        public Cursor fetchAllTAble1data() {
            return database.query("MenuData", new String[] { "id", "Title",
                    "Image", "Description" }, null, null, null, null, null);
        }

        public Cursor fetchAllTable2data() {
            return database.query("RestaurantsData", new String[] {
                    "restaurant_id", "name", "phone", "email", "open_days",
                    "timing", "website", "loc_name", "street", "city", "longitude",
                    "latitude", "zip" }, null, null, null, null, null);
        }

        public void deleteTable(String tablename){
            database.execSQL("drop table if exists "+tablename+';');
        }
        public void createIndividualTable(String query){
            database.execSQL(query);
        }


        public void InsertTable1Data(TAble1 review) {
            ContentValues values = new ContentValues();
            values.put("Name", review.Name);
            values.put("Email", review.Email);
            values.put("Comment", review.Comment);
            values.put("Rating", review.Rating);

            database.insert("ReviewsData", null, values);

        }

        public void InsertTable2Data(TAble2 photos) {
            ContentValues values = new ContentValues();
            values.put("photo", photos.Photos);

            database.insert("PhotosData", null, values);

        }



        public ContentValues createContentValues(String category, String summary,
                String description) {
            ContentValues values = new ContentValues();

            return values;
        }
    }


 类似资料:
  • 当我在一个数据库中创建两个实体时,它会显示这个错误。当我要添加的另一个表不在那里时,该程序工作得很好。当然,它不应该有任何错误,因为它没有概念上的缺陷。我只是不能碰巧找到这个错误的原因。

  • 我正在研究NFC应用程序。当我打开应用程序并从NFC标签读取信息时,活动打开哪个注册了意图过滤器,这将打开一个已经打开的应用程序的新实例。如何关闭应用程序的上一个实例或打开应用程序的上一个实例。 请帮帮我,抱歉英语不好。。提前谢谢。

  • 我正在工作的Spring引导多租赁应用程序。我配置了多个数据源,如下所示: 应用程序启动程序 运行启动应用程序时,所有表都只在第一个数据源中创建。 1)如何在应用程序启动时在所有数据源中创建表? 2)如何查看每个数据源打开/关闭的连接? 3)是否有更好的方法使用spring boot配置多租户应用程序以获得更好的性能?

  • 问题内容: 我有一个待办事项列表类型应用程序,可将所有注释数据存储在sqlite3数据库中。应用程序中的每个活动都需要访问数据库以实时编辑数据的不同部分。 当前,我让每个活动都打开自己的DBManager对象(我创建的用于管理数据库的帮助程序类)。但是,这导致了问题,我想要一个稍微更全局的访问解决方案,因此我不必继续打开/关闭/创建数据库。 我正在考虑几种选择,并且希望听到每种选择的利弊以及其他建

  • 问题内容: 您对创建单个实例应用程序有什么建议,以便一次只允许一个进程运行?文件锁,互斥锁还是什么? 问题答案: 一个好的方法是: 请注意,锁定使您可以忽略陈旧的pid文件(即,您不必删除它们)。当应用程序由于任何原因终止时,操作系统会为您释放文件锁。 Pid文件并不是非常有用,因为它们可能是过时的(该文件存在但该过程没有)。因此,可以锁定应用程序可执行文件本身,而不是创建和锁定pid文件。 一种

  • 问题内容: 我有两个相同的应用程序,分别在一个用于演示和一个用于开发的应用程序上运行。m使用redis数据库存储键值,我如何为这两个不同的应用程序分离redis数据库。m使用node.js作为Redis客户端。和m使用此https://github.com/mranney/node_redis/ redis客户端。 如何在节点中为同一应用程序分离redis数据库。 问题答案: 您可以在node_r