android条件查询sqlite,关于android:在SQLite查询中使用where条件插入或替换多行

我需要一个SQLite查询来插入或更新SQLite表。

MyTable:

ID(主键,不为null)

名称

电话号码

f90dcbe4003660df8e5a895419783e91.png

Expected Query: If the Id is not present then have to insert a new row

and If the existing row value is changed then update the row when inserting multiple row.

编辑1:

我已经发布了INSERT查询,我已经在SQLite错误(错误代码= 1)中插入多行尝试过。 这样,我尝试使用"插入或替换"。 但它是working with Firfox SQLite Manager Not working with Android SQLite。

我已使用sDataBase.execSQL(query)执行此查询。

只是说明可能对某人有帮助。 具有"插入或替换"的批处理命令(例如..值(...),(...),(...)等等)完全可以。

可能对某人有用的另一个说明:)有趣的是,性能测试表明,"插入或替换"比普通的"插入"要慢得多(最坏情况下为5%)。

尝试这个:

String sql ="INSERT OR REPLACE INTO MyTable (Name, PhoneNumber) VALUES (?,?)";

SQLiteStatement st = db.compileStatement(sql);

并编写或更新:

public void writeOrUpdateData(ArrayList data) {

try {

db.beginTransaction();

for(int i = 0; i < data.size(); i++) {

st.clearBindings();

st.bindLong(1, data.get(i).getName());

st.bindString(2, data.get(i).getPhoneNumber);

st.executeInsert();

}

db.setTransactionSuccessful();

}

catch(Exception e) {}

finally {

db.endTransaction();

}

}

这样,您可以获得批量插入/更新,这非常有效!

多行将不适用于您的查询。 我努力了。 stackoverflow.com/questions/1609637/

@Ponmalar Emm,我希望您有一些要在本地sqlite db中编写/更新的自定义类对象。 因此,批量插入/更新就可以了。 在ArrayList中传递多个对象

感谢您的答复。 我正在从webview发送查询。 在WebView内,我将使用sDataBase.execSQL(query);执行查询。 所以我只需要查询

请检查我的EDIT1

我仅在Firefox SQLite Manager中使用主键创建了数据库。 我在Android的SQLite数据库中错过了这一点。 现在我有created database with PRIMARY KEY and NOT NULL。 现在工作正常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Room是Google为Android平台开发的一个SQLite对象映射数据库框架,它提供了一种简单的方式来访问SQLite数据库。下面是使用Room进SQLite查询的基本步骤: 1. 定义实体类:在Room,表是通过实体类来表示的。你需要定义一个Java类来表示数据库的每个表,并使用注释来指定表名、列名等信息。 2. 定义DAO接口:DAO(Data Access Object)是用于访问数据库的接口。你需要定义一个接口来提供对实体类的CRUD操作。 3. 创建数据库:使用Room,你可以在应用程序创建一个SQLite数据库。你需要创建一个继承自RoomDatabase的抽象类,并定义抽象方法来获取DAO对象。 4. 执查询操作:在DAO接口定义查询语句,并在应用程序调用该方法来执查询操作。以下是一个使用Room进查询的示例: ```java @Dao public interface UserDao { @Query("SELECT * FROM user WHERE id = :userId") User getUserById(int userId); @Query("SELECT * FROM user WHERE name LIKE :name") List<User> getUsersByName(String name); @Insert void insertUser(User user); } ``` 在上面的示例,@Query注释指定了查询语句,getUserById方法根据用户ID查询用户,getUsersByName方法根据名称查询用户,insertUser方法将用户插入数据库。 要使用上述查询方法,你需要创建一个RoomDatabase实例并获取UserDao对象。以下是一个使用Room进查询的示例: ```java UserDatabase db = Room.databaseBuilder(getApplicationContext(), UserDatabase.class, "user.db").build(); UserDao userDao = db.userDao(); // 根据ID查询用户 User user = userDao.getUserById(1); // 根据名称查询用户 List<User> users = userDao.getUsersByName("John"); // 插入用户 User newUser = new User("Alice", "alice@example.com"); userDao.insertUser(newUser); ``` 在上面的示例,我们创建了一个UserDatabase实例,并使用其userDao()方法获得UserDao对象。然后我们可以使用UserDao对象的方法来执查询插入操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值