0

我正在编写我希望有两个版本的应用程序 - 一个用于桌面(java 标准版),一个用于 android。

目前我正在研究数据库模型。为了让代码在两个版本中都能正常工作,第一个想法是跳过所有在两个平台之间不兼容的函数(不幸的是,Android 和桌面 Java 具有完全不同的类来管理 SQLite 数据库,即使某些方法相似)并且只使用纯原始 SQL 语句。

然而,当更深入时,我对这种方法有很多问题。

1)如何使用纯原始 SQL 语句存储 BLOB(类似于

insert into table (col1, col2) values (val1, [...... 100KB val 2])

有很多答案如何做到这一点。使用适用于 Android 的 ContentValues 类,但要么我必须创建自己的一组涵盖标准 Android/桌面 Java 类的类,要么将这个数据库层分为两个不同的版本。

2)如何以自动方式替换所有对sql语句具有特殊含义的字符,例如。“父亲的车” - ' 不允许直接放在 sql 语句中(请不要忘记纯原始 sql 语句)。

结论:

A) 你知道我上面的问题的答案吗?B)以这种方式工作是否值得(仅纯原始 sql 语句)?C)如果不是承认什么方法 - 创建我自己的一组用于操作的类,或者只是创建这个数据库层的两个不同版本?

顺便说一句,我可以理解 Android 有完全不同的 GUI 类,但是为什么他们为数据库等东西创建了完全不同的方法......

4

1 回答 1

0
  1. 在 SQLite 中,您可以使用blob 文字
    INSERT INTO Tab(blob) VALUES(x'001122abcdef');
  1. 所有SQL API 都允许使用参数;在 Android SQLite API 中,甚至rawQuery有这个:

    db.rawQuery("INSERT INTO Sold(ID, Name) VALUES(1234, ?)",
                new String[] { "father's car" });
    
于 2013-09-13T18:24:39.357 回答