package com.jxtech.cscsyn.util; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import org.apache.poi.util.IOUtils; public class GenSqliteDbUtil { private static void createRssDB(List<Byte> byteList) throws SQLException, Exception { Connection conn=null; PreparedStatement prep=null; PreparedStatement rssInfoPrep=null; InputStream in = null; try{ Class.forName("org.sqlite.JDBC"); String url=Thread.currentThread().getContextClassLoader().getResource("/").toString().substring(5); conn = DriverManager.getConnection("jdbc:sqlite:"+url+"rss.db"); LOG.info("rss.db的路径"+url+"rss.db"); Statement stat = conn.createStatement(); stat.executeUpdate("drop table if exists rssType;"); StringBuffer rssTableSql=new StringBuffer("create table rssType ("); rssTableSql.append("id INTEGER, name NTEXT,"); rssTableSql.append("typeId INTEGER,logoUrl NTEXT,"); rssTableSql.append("sort INTEGER);"); stat.executeUpdate(rssTableSql.toString()); LOG.info("创建rssTypeSql:"+rssTableSql.toString()); prep = conn.prepareStatement( "insert into rssType values (?, ?, ?, ?, ?);"); List<SubscribeManage> list=this.getRssType(firmId); if(list.size()>0){ for (SubscribeManage subscribeManage : list) { prep.setInt(1,subscribeManage.getId()); prep.setString(2,subscribeManage.getRssCategory()); prep.setInt(3,subscribeManage.getId()); prep.setString(4,subscribeManage.getRssImgUrl()); prep.setInt(5,subscribeManage.getOrder()); prep.addBatch(); } } conn.setAutoCommit(false); prep.executeBatch(); conn.setAutoCommit(true); Statement stats = conn.createStatement(); stats.executeUpdate("drop table if exists rssInfo;"); StringBuffer rssInfoSql=new StringBuffer("create table rssInfo ("); rssInfoSql.append("id INTEGER, name NTEXT,"); rssInfoSql.append("itr INTEGER,typeId INTEGER,"); rssInfoSql.append("snum INTEGER,url NTEXT,"); rssInfoSql.append("isSubs INTEGER,sort NTEXT,"); rssInfoSql.append("vurl NTEXT,wid INTEGER,"); rssInfoSql.append("subTime TIMESTAMP);"); stats.executeUpdate(rssInfoSql.toString()); rssInfoPrep = conn.prepareStatement( "insert into rssInfo(id,name,itr,typeId,url,sort) values (?, ?, ?, ?, ?, ?);"); List<SubscribeDTO> subList=subscribeService.getRssInfo(firmId); if(subList.size()>0){ for (SubscribeDTO subscribeDTO : subList) { rssInfoPrep.setInt(1, subscribeDTO.getId()); rssInfoPrep.setString(2, subscribeDTO.getSubName()); rssInfoPrep.setString(3, subscribeDTO.getInfo()); rssInfoPrep.setInt(4, subscribeDTO.getSubManageId()); rssInfoPrep.setString(5, subscribeDTO.getRssImgUrl()); rssInfoPrep.setInt(6, subscribeDTO.getOrder()); rssInfoPrep.addBatch(); } } conn.setAutoCommit(false); rssInfoPrep.executeBatch(); conn.setAutoCommit(true); in=new FileInputStream(url+"rss.db"); byte[] b = IOUtils.toByteArray(in); for (int i = 0; i < b.length; i++) { byteList.add(b[i]); } LOG.info("rss.db的路径"+url+"rss.db"); }catch(Exception e){ LOG.info("异常:"+e.getMessage()); e.printStackTrace(); }finally{ if(prep!=null){ prep.close(); } if(rssInfoPrep!=null){ rssInfoPrep.close(); } if(conn!=null){ conn.close(); } if(in!=null){ in.close(); } } } public static void main(String[]args){ // TODO Auto-generated method stub try { long start = System.currentTimeMillis(); // 连接SQLite的JDBC Class.forName("org.sqlite.JDBC"); // 建立一个数据库名test.db的连接,如果不存在就在当前目录下创建之 Connection conn = DriverManager .getConnection("jdbc:sqlite://d:/shb.db"); long end = System.currentTimeMillis(); System.out.println("创建数据库文件并连接耗费时间:" + (end - start)); conn.close(); start = System.currentTimeMillis(); conn = DriverManager.getConnection("jdbc:sqlite://d:/shb.db"); end = System.currentTimeMillis(); System.out.println("数据库连接耗费时间:" + (end - start)); start = System.currentTimeMillis(); Statement stat = conn.createStatement(); stat.executeUpdate ("drop table if exists tbl1;" ) ; // 创建一个表,两列 stat.executeUpdate("create table tbl1(name varchar(20), salary int);"); end = System.currentTimeMillis(); System.out.println("创建表耗费时间:" + (end - start)); // 插入数据 start = System.currentTimeMillis(); stat.executeUpdate("insert into tbl1 values('林凡',8000);"); stat.executeUpdate("insert into tbl1 values('罗航',7800);"); stat.executeUpdate("insert into tbl1 values('小利',5800);"); stat.executeUpdate("insert into tbl1 values('密诏',9100);"); end = System.currentTimeMillis(); System.out.println("插入四行数据耗费时间:" + (end - start)); start = System.currentTimeMillis(); ResultSet rs = stat.executeQuery("select * from tbl1;"); // 查询数据 while (rs.next()) { // 将查询到的数据打印出来 System.out.print("name = " + rs.getString("name") + " "); // 列属性一 System.out.println("salary = " + rs.getString("salary")); // 列属性二 } rs.close(); end = System.currentTimeMillis(); System.out.println("查询数据耗费时间:" + (end - start)); conn.close(); // 结束数据库的连接 } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
以下是一个简单的示例,展示如何在Delphi中使用SQLite3 Simple包装类创建内存数据库、插入数据并备份到本地: ```delphi uses Sqlite3, Sqlite3Simple; var DB: TSqliteDatabase; Query: TSqliteQuery; begin ...
- **插入数据**:使用`SQLiteDatabase`对象的`insert()`方法。例如: ```java ContentValues values = new ContentValues(); values.put("name", "John"); values.put("age", 30); long newRowId = db.insert...
使用SQLite本地数据库,首先需要了解基本概念。数据库是存储和管理数据的系统,而表是数据库中的数据结构,类似于电子表格。列定义了表的结构,行则代表单个记录。在SQLite中,你可以通过SQL(结构化查询语言)来...
- 使用uniAPP的sqlite插件提供的API,可以创建新的SQLite数据库,并在其中定义数据表结构。例如,创建一个`students`表,包含`id`、`name`和`age`字段。 - SQL语句示例:`CREATE TABLE students (id INTEGER ...
《火山视窗Sqlite本地数据库操作》 SQLite是一款轻量级的、开源的、自包含的、无服务器的、零配置的SQL数据库引擎,广泛应用于移动设备和嵌入式系统中。火山视窗Sqlite本地数据库操作是针对火山视窗平台进行SQLite...
总之,Android应用中的SQLite数据库是数据存储的关键工具,通过创建SQLiteOpenHelper子类、操作SQL语句以及复制预置.db文件,我们可以实现数据的本地化存储,满足应用对数据持久化的需要。对于初学者来说,理解和...
【标题】:“vs2017 xamarin使用本地sqlite数据库源码”揭示了如何在Visual Studio 2017(简称VS2017)中利用Xamarin开发Android应用,并集成SQLite作为本地数据库进行数据存储。Xamarin是一款强大的跨平台移动应用...
SQLite是一个轻量级的数据库引擎,它允许在无需服务器进程的情况下进行数据库管理,非常适合嵌入式应用或本地数据存储。 首先,确保你已经安装了System.Data.SQLite NuGet包,这是.NET Framework和.NET Core用于与...
以上就是使用SQLite实现本地数据库登录、注册和验证的基本流程。在实际应用中,还需要考虑异常处理、数据持久化、用户界面交互等多个方面,确保系统的稳定性和用户体验。通过不断学习和实践,你可以更好地掌握SQLite...
在描述中提到的"用sqlite的ODBC驱动成功访问sqlite本地数据库",表明了开发者采用的是通过ODBC(Open Database Connectivity)数据源来连接SQLite数据库。ODBC是Windows系统中一个标准的数据访问接口,使得不同编程...
SQLite为Android应用提供了本地数据库支持,使得开发者能够在设备上进行数据的持久化。下面将详细讲解如何在Android中使用SQLite进行数据的增、删、查、改操作。 首先,我们需要创建一个SQLite数据库。在Android中...
接下来,我们需要了解如何向SQLite数据库插入数据。SQLite提供了SQL语句INSERT来实现这一功能。例如: ```java public void insertData(String name, int age) { SQLiteDatabase db = this.getWritableDatabase();...
在这个例程中,我们将探讨如何使用SQLite进行数据库的创建、插入数据、清空表以及删除表等基本操作。 首先,我们需要包含SQLite的库文件,并初始化数据库连接。在C语言中,这通常通过`sqlite3_open()`函数完成。...
ASQLite3支持事务处理、SQL查询、数据类型转换、错误处理等,使得开发者可以通过简单的代码进行数据库操作,例如创建表、插入记录、更新和删除数据等。 SQLite Administrator是一款强大的SQLite3数据库图形化管理...
`sqlite命令.txt`可能包含SQLite的命令行工具的使用指南,SQLite提供了命令行接口供用户直接操作数据库,如创建表、插入数据、查询等。 `sqlite3_analyzer-3.7.1-win32.zip`是SQLite分析工具,用于分析数据库的内部...
Android系统内置了SQLite库,允许开发者创建、管理本地数据库来存储应用数据。SQLite数据库文件以`.db`为扩展名,存放在应用的私有数据目录下,确保数据的安全性。 2. 创建SQLite数据库: 在Android中,我们通常...
SQLite数据库是一种轻量级的关系型数据库管理系统,常用于移动设备和嵌入式系统中的本地数据存储,因为它无需单独的服务器进程,而是直接在应用程序中运行。在这个场景中,SQLite被用来实现用户账户管理,包括登录、...
在本示例中,我们将探讨如何使用Adobe Integrated Runtime(AIR)来读取本地文件,并将其中的数据,包括二进制图片,插入到SQLite数据库中。首先,我们需要理解几个核心概念: 1. Adobe AIR:Adobe AIR是一种跨平台...
6. **插入数据**:使用`INSERT INTO`语句向表中插入数据,通过SqlCommand的ExecuteNonQuery方法执行。 7. **查询数据**:使用`SELECT`语句获取数据,SqlCommand的ExecuteReader方法返回一个DataReader对象,通过它...
SQLite数据库是一种轻量级的关系型数据库管理系统,它被广泛地嵌入到应用程序中,用于在设备上进行数据存储和检索。Android平台内置了SQLite数据库,并提供了一系列API来方便开发者进行数据库操作。在Android开发中...