我试着保存到Sqlite Event
public class EventDao{
private SQLiteStatement insertStatement;
private SQLiteDatabase db;
private static final String INSERT =
"insert into " + EventsTable.TABLE_NAME + "(" + EventsColumns.WHO + ", "
+ EventsColumns.WHAT
+ ") values (?, ?)";
public EventDao(SQLiteDatabase db) {
this.db = db;
Log.w(TAG, EventDao.INSERT);
insertStatement = db.compileStatement(EventDao.INSERT);
}
public long save(Event type) {
insertStatement.clearBindings();
insertStatement.bindString(1, type.getmWho());
insertStatement.bindString(2, type.getmWhat());
return insertStatement.executeInsert();
}
//...
}
Run Code Online (Sandbox Code Playgroud)
一切工作确定,当两者getmWho()并getmWhat()返回非null数值.但是当我尝试保存具有Who字段为空的事件(并因此getmWho()返回null)时,我收到错误
java.lang.IllegalArgumentException: the bind …Run Code Online (Sandbox Code Playgroud) 是否可以创建Sugar ORM独有的列?或者是否可以插入或替换指定的行,例如用户名,但是这个用户名可能不在db中,因为他可能没有创建.
我在 sqlite 表中以 ISO8601 格式示例 2015-04-15T10:54:14Z 存储日期,我想要表中最年轻的日期。下面是我的sqlite表中的日期
2015-04-15T10:54:14Z
2015-04-15T10:54:115Z
2015-04-15T10:54:216Z
2015-04-15T10:54:320Z
2015-04-15T10:54:422Z
Run Code Online (Sandbox Code Playgroud)
我正在尝试以下查询:
SELECT * FROM Table1 ORDER BY datetime("date_column") DESC ;
Run Code Online (Sandbox Code Playgroud)
但我没有得到适当的结果。
我有一个简单的实体:
[Table("History")]
public class History
{
[PrimaryKey, AutoIncrement, Column("_id")]
public int Id { get; set; }
[Indexed(Name = "IDX_History", Order = 1, Unique = true)]
public int Prefix { get; set; }
[Indexed(Name = "IDX_History", Order = 2, Unique = true)]
public int Stem { get; set; }
[Indexed(Name = "IDX_History", Order = 3, Unique = true)]
public int Suffix { get; set; }
[Indexed(Name = "IDX_Favourite")]
public bool IsFavourite { get; set; }
public DateTime LastViewed { get; set; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 select 语句从数据库表中查询一些数据。当我输入=? 查询成功,但是当我使用LIKE %?%时,我在 logcat 中收到此错误:
FATAL EXCEPTION: main
Process: com.example.ahmed.bus_time_djerba4, PID: 4178
java.lang.IllegalArgumentException: Cannot bind argument at index 2 because the index is out of range. The statement has 0 parameters.
Run Code Online (Sandbox Code Playgroud)
这是我调用数据库的方法:
public String QuerySQL(String DepartStation,String Destination){
String result="";
SQLiteDatabase db=this.getReadableDatabase();
Cursor c=db.rawQuery("select distinct * from "+TABLE_Name+" where "+Col_3+" LIKE '%?%' and "+Col_4+" LIKE '%?%'", new String[]{DepartStation,Destination});
if(c.getCount()==0) {result="Data not found";c.close();}
else {
while (c.moveToNext()) {
//affichage des lignes
int ligne = c.getInt(1);
String Station …Run Code Online (Sandbox Code Playgroud) 我需要检索id最近插入的实体的生成值,如下面添加的代码示例所示:
如上所述,id实体的字段用Student注释PrimaryKey(autoGenerate= true)。
Student s = new Student();
s.setName("foo");
// call of other setters
appDatabase.getGenericDAO().insertStudent(s);
// Now I need to retrieve the value of generated id as we do in Hibernate by the usage of merge method
Integer id = s.getId();
Run Code Online (Sandbox Code Playgroud)
道
@Dao
public interface IGenericDAO {
@Insert
Long insertStudent(Student student);
@Insert
void insertOgrenci(List<Student> studentList);
@Update
void updateOgrenci(Ogrenci... ogrenci);
@Delete
void deleteOgrenci(Ogrenci... ogrenci);
}
Run Code Online (Sandbox Code Playgroud) 我想在 Android Room 中使用预先填充的数据库。我找到了一种通过使用回调来实现它的方法,并填充了数据库文件。但是出了点问题,我确定数据库复制正常,但在设备监视器和android模拟器中它仍然为空。你能帮我么
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
private static final String DB_NAME = "base.db";
static Context ctx;
public abstract Dao dao();
public static AppDatabase getDatabase(Context context) {
if (INSTANCE == null) {
ctx = context;
synchronized (AppDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context,
AppDatabase.class, DB_NAME)
.allowMainThreadQueries()
.addCallback(rdc)
.build();
}
}
}
return INSTANCE;
}
private static RoomDatabase.Callback rdc = new RoomDatabase.Callback() {
public void onCreate(SupportSQLiteDatabase db) {
new PopulateDbAsync(INSTANCE, …Run Code Online (Sandbox Code Playgroud) 每次启动应用程序时都会出现错误。
E/SQLiteLog: (283) recovered 22 frames from WAL file /data/data/com.dmitrysimakov.kilogram/databases/androidx.work.workdb-wal
Run Code Online (Sandbox Code Playgroud)
该应用程序工作正常,但我想知道为什么会出现此错误。database/androidx.work.workdb-wal 它是 Worker 的日志。我使用 Worker 来预填充我的数据库。
Room.databaseBuilder(app, KilogramDb::class.java, "kilogram.db")
.addCallback(object : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
val request = OneTimeWorkRequestBuilder<SeedDatabaseWorker>().build()
WorkManager.getInstance().enqueue(request)
}
})
.fallbackToDestructiveMigration()
.build()
Run Code Online (Sandbox Code Playgroud) android android-sqlite android-architecture-components android-workmanager
我已经使用 Room Persisdent lib 创建了 MovieDatabase。根据 RoomDatabase.Callback 中 onCreate() 方法的文档,onCreate() 在第一次创建数据库后调用,所有表都创建完毕。
在我调用 buildPersistentDB() 之后发生的事情是,我收到了来自 MoviesDatabase 类的日志,该类用@Database 进行了注释,但是尽管我调用了 RoomDatabase.Callback 中来自 onCreate() 的日志,但从未调用过:
this.mMovieDatabase = this.mMovieDBPersistentBuilder.fallbackToDestructiveMigration().build();
Run Code Online (Sandbox Code Playgroud)
我创建数据库的方式清楚地显示在 buildPersistentDB() 方法中。我还发布了 MovieDatabase 类,如下所示。
我想知道为什么我没有从 Room.Callback 中的 onCreate() 方法收到日志,尽管数据库已成功创建
代码_1:
public void buildPersistentDB() {
Log.v(TAG_LOG, "->buildPersistentDB");
this.mMovieDBPersistentBuilder = Room
.databaseBuilder(getApplicationContext(), MovieDatabase.class, ActMain.DATA_BASE_NAME);
this.mMovieDBPersistentBuilder.addCallback(new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
Log.v(TAG_LOG + "->onCreate", " buildPersistentDB->DB is created, all tables has been created");
Log.d(TAG_LOG + "->onCreate", " buildPersistentDB->DB db.getPath(): " + db.getPath()); …Run Code Online (Sandbox Code Playgroud) 我正在使用带有多个表的 SQLite 数据库。其中许多都有 DATETIME 类型的列。
我已经开始将我的数据库迁移到 Room。但我不知道在实体类中使用什么数据类型来创建表中列的 DATETIME 类型。
android-sqlite ×10
android ×8
sqlite ×5
android-room ×4
android-architecture-components ×1
filestream ×1
populate ×1
sql-insert ×1
sqlite-net ×1
sugarorm ×1
xamarin ×1