Tag: sqlite

如何在android中使用正则表达式搜索sqlite数据库?

我试图在sqlite中使用正则表达式搜索数据库。 这是我的代码: cursor = db.rawQuery(“SELECT _id, employee FROM employees WHERE employee REGEXP ?”, new String[]{“%” + prepareSearchText() + “%”}); adapter = new SimpleCursorAdapter( this, R.layout.search_row, cursor, new String[] {“_id”, “employee “}, new int[] {R.id.idField, R.id.nameField}); setListAdapter(adapter); 但是我收到此错误: Caused by: android.database.sqlite.SQLiteException: no such function: REGEXP. 之前我在MySQL中使用了函数REGEXP,所以我认为它存在于sqlite中,但显然它不是。 在android中查询sqlite数据库时执行正则表达式的最佳方法是什么?

Java – JDBC驱动程序SQLite 3.7.2 – 无法打开数据库test.db:文件已加密或不是数据库

我正在使用java中的SQLite JDBC驱动程序3.7.2将一些数据写入数据库文件。 当我尝试在命令行上打开数据库文件时,收到一条错误消息: “无法打开数据库test.db:文件已加密或不是数据库” 我做了一个最小的例子导致了这种行为: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; public class PlaygroundSQLite { public static void insertIntoDB(String dbFilename, String tablename){ try { Class.forName(“org.sqlite.JDBC”); Connection conn = DriverManager.getConnection(“jdbc:sqlite:”+dbFilename); PreparedStatement prep = conn.prepareStatement(“insert into ” + tablename + “( id, text) values (?, ?);”); prep.setString(1, “1FD22A38”); prep.setString(2, “This is a simple […]

优化批量插入,SQLite

我正在使用不同的缓冲区大小插入到本地SQLite DB中,并发现当缓冲区大小为10,000时,插入10,000,000行数据需要将近8分钟。 换句话说,它需要1,000次写入来存储所有内容。 存储10,000,000的8分钟似乎有点太长(或者是吗?) 以下任何一项都可以进行优化以提高速度吗? 请注意,插入的数据是随机的字符集合。 public int flush() throws SQLException { String sql = “insert into datastore values(?,?,?,?);”; PreparedStatement prep = con.prepareStatement(sql); for (DatastoreElement e : content) { // content is 10,000 elements long _KVPair kvp = e.getKvp(); prep.setInt(1, e.getMetaHash()); prep.setInt(2, kvp.hashCode()); prep.setString(3, kvp.getKey()); prep.setString(4, kvp.getValue()); prep.addBatch(); } int[] updateCounts = prep.executeBatch(); con.commit(); return […]

SQLite连接池

我想在android中有一个连接池,因为并行线程必须同时访问数据库。 Android提供了与javax.sql连接一起使用的PooledConnection接口。 由于在Android中没有正式支持jdbc for SQLite,我想到了另一种方法,即实现SQLite数据库的连接池。 你怎么看待这种方法。 有什么风险? 我忽视了什么吗? 我的代码如下: 数据库的连接包装类: public class PoolConnection { protected SQLiteDatabase sqlDb; protected long openedAt; private static final String DB_NAME = Environment .getExternalStorageDirectory() + “/data/DBNAME.sqlite”; private static final int DB_VERSION = 1; private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void […]

java.lang.NumberFormatException:无效的int:“null”

方法getAllActivities()必须以数组列表格式从数据库返回所有活动但是我得到:java.lang.NumberFormatException:无效的int:“null”,at activity.setActivityType(Integer.parseInt(cursor.getString(1))); 我不知道出了什么问题 import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteStatement; import com.yast.util.Constants; import com.yast.util.Utils; import java.util.ArrayList; import java.util.List; public class DatabaseHandler extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = “YastDB.db”; // Activities table name private static final String TABLE_ACTIVITIES = “Activities”; // […]

将字节数组插入blob列

我正在尝试将字节数组插入sqlite数据库中的blob列。 我已尝试使用setBinaryStream和setBytes,但我没有通过SQLite JDBC驱动程序exception实现。 我正在使用sqlite-jdbc-3.8.7.jar。我应该用什么jar来实现这项工作? 谢谢! 这是我的代码: public void addDriverData(String prenume,String nume,String telefon,String email,String permis,String parola,byte[] photo) throws SQLException { String sql = “INSERT INTO driver(first_name,last_name,phone,email,permit,password,photo)VALUES(?,?,?,?,?,?,?)”; PreparedStatement stm = c.prepareStatement(sql); stm.setString(1,prenume); stm.setString(2,nume); stm.setString(3,telefon); stm.setString(4,email); stm.setString(5,permis); stm.setString(6, parola); //stm.setBinaryStream(7,new ByteArrayInputStream(photo),photo.length); stm.setBytes(7, photo); System.out.println(sql); stm.executeUpdate(sql); stm.close(); c.commit(); }

找不到合适的驱动程序(SQLite)

我希望有一个人可以帮助我。 我正在开发一个与SQLite数据库连接的简单应用程序。 以下是我的连接代码: try { Connection con = DriverManager.getConnection(“jdbc:sqlite:myDB.sqlite”); PreparedStatement pstm = con.prepareStatement(“insert into hell(username,pssword) ” + “values (‘”+tfUname.getText()+”‘,'”+tfUpass.getText()+”‘)”); pstm.close(); con.close(); JOptionPane.showMessageDialog(null,”Congrats, you have been registered succesfully”); RegisterWindow rw = new RegisterWindow(); rw.setVisible(false); pack(); dispose(); } catch(SQLException ex) { setTitle(ex.toString()); } 这只是一个在数据库中加载用户名和密码的窗口。 我遇到的问题是当我点击按钮时出现以下exception: “java.sql.SQLException: No suitable driver found for jdbc:sqlite:C\\LoginJava2\\myDB.sqlite” (我找到了一个关于如何使用Java连接到SQLite数据库的示例,我发现的示例效果很好) 这个程序我在窗口构建器(eclipse)中这样做。 我使用的是我在我找到的示例中使用的相同驱动程序。 我不知道是否必须使用其他驱动程序。 事实上,我尝试过不同的驱动程序,但仍然会显示该消息。

如何在Real(SQlite)列中存储BigDecimal(Java)值?

我仍然遇到BigDecimal的大问题(泪水的痕迹从这里开始,到目前为止一直持续到这里 。 现在我遇到了相反的问题 – 从POJO中的BigDecimal到SQLite表中的REAL。 POJO定义为: public class DeliveryItem { private int _id; private String _invoiceNumber; private String _UPC_PLU; private String _vendorItemId; private int _packSize; private String _description; private BigDecimal _cost; private BigDecimal _margin; private BigDecimal _listPrice; private int _departmentNumber; private String _subdepartment; private String _quantity; public void setID(int id) { this._id = id; } […]

如何在Tomcat 6中配置SQLite?

你能否提供一下如何在tomcat 6中使用sqlite? 我正在使用Xerial sqlite jdbc驱动程序。 在我的应用程序中,我有多个sqlite数据库(.db文件),并且需要连接到不同的sqlite数据库,具体取决于用户登录的内容? 我在哪里可以将所有.db文件放在webapp根目录中或系统中的任何位置或WEB-INF中? 谢谢, 深

在JAVA中解析大型XML文档

我有以下问题: 我有一个XML文件(大约1GB),并且必须上下迭代(即不顺序;一个接一个),以获得所需的数据并对其进行一些操作。 最初,我使用了DOM Java包,但显然,在解析XML文件时,JVM会达到其最大堆空间并停止。 为了克服这个问题,我提出的解决方案之一是找到另一个迭代XML中每个元素的解析器,然后将它的内容存储在硬盘上的临时SQLite数据库中。 因此,通过这种方式,不会超出JVM的堆,并且一旦填满所有数据,我就会忽略XML文件并继续对临时SQLite数据库执行操作。 还有另一种方法可以解决我的问题吗?