我正在编写应用程序,我希望有两个版本 - 一个用于桌面(java标准版),另一个用于android。
目前我正在研究数据库模型。为了让代码在两个版本中都有效,第一个想法是跳过所有那些在两个平台之间不兼容的功能(不幸的是,即使某些方法类似,Android和桌面Java也有完全不同的类来管理SQLite数据库)并且只能使用纯原始SQL语句。
然而,当进一步深入时,我对这种方法有很多问题。
1)如何使用纯原始SQL语句(类似
)存储BLOBinsert into table (col1, col2) values (val1, [...... 100KB val 2])
如何做到这一点有很多答案。使用Android的ContentValues类,但要么我必须创建自己的一组类,涵盖标准的Android /桌面Java类,要么将这个数据库层分成两个单独的版本。
2)如何自动替换所有那些对sql语句有特殊含义的字符,例如。 “父亲的车” - '不允许直接放在sql语句中(请不要忘记纯粹的原始sql语句)。
结论:
A)你知道上面我的问题的答案吗? B)是否值得以这种方式工作(只有纯原始的sql语句)? C)如果没有采用什么方法 - 创建我自己的一组操作类,或者只是创建这个数据库层的两个不同版本?
顺便说一句,我可以理解Android有完全不同的GUI类,但为什么他们为像数据库这样的东西创建了完全不同的方法....
答案 0 :(得分:0)
INSERT INTO Tab(blob) VALUES(x'001122abcdef');
所有 SQL API允许使用参数;在Android SQLite API中,即使rawQuery
也有:
db.rawQuery("INSERT INTO Sold(ID, Name) VALUES(1234, ?)",
new String[] { "father's car" });