如何使用QT和SQLite实现文件操作

时间:2011-10-28 21:51:52

标签: sql sqlite qt

格尔茨,

我非常好奇如何在QT和SQLite中使用基本文件操作,并想知道是否有当前的例子。我的想法是这样的;

  • OnAppOpen - 在:memory:database(只调用新文件)
  • 中创建表
  • OnFileSave - 将所有内容复制到:memory:到磁盘上的文件
  • OnFileOpen - 将所有内容从磁盘上的文件复制到:memory:
  • OnFileNew - 删除当前:内存:数据库并创建一个新的(OnAppOpen)

或类似

  • AppOpen
  • FileNew - 从数据库断开连接并使用:memory:name
  • 创建新数据库
  • FileSave - 获取当前数据库名称

对此的任何帮助都将非常感激,thx。

2 个答案:

答案 0 :(得分:1)

dbAdapter示例,如果您想保存日志本身。

public class DBAdapter {
    static final String ________________ (xtimes u need it)

    static final String DATABASE_CREATE = "CREATE TABLE ('_______');
    final Context context;
    DatabaseHelper DBHelper;
    SQLiteDatabase db;

    public DBAdapter(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)
        {
            try {
                db.execSQL(DATABASE_CREATE);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        @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 vehicle");
            onCreate(db);
        }
    }

    public DBAdapter open() throws SQLException
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }

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

    public long insertVehicle(String _________ (xtimes u want))
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(_________);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

    public Cursor getAllVehicles()
    {
        return db.query(DATABASE_TABLE, new String[] {DATABASE_ROW_ID, ____}, null, null, null, null, null);
    }

答案 1 :(得分:0)

Qt已经将MySql作为数据库操作的内置SQL包。由于许可证不兼容,QSQllite可能无法使用。如果要使用sqllite,则应安装开发包以使用sqllite服务。

像你提到的那样的操作绝对可以用于sqllite。

您可以在http://doc.trolltech.com/4.5/examples.html#sql

找到sqllite示例