sqlite工具数据库的操作:
package com.darkblue.dynem.util.sqlitedb; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.logging.Logger; import org.mortbay.util.Log; import com.darkblue.dynem.test.TestEIMMainFrame; import com.darkblue.dynem.util.filehelp.FileBean; public class SqliteDB { private static final Logger log = Logger.getLogger(SqliteDB.class.toString()); Connection conn; Statement stat; //连接到数据库 public SqliteDB(){ try { Class.forName("org.sqlite.JDBC"); conn=DriverManager.getConnection("jdbc:sqlite:filebean.db"); stat=conn.createStatement(); log.info("连接到Sqlite"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //FileBean是在别处定义的类。作为例子使用。 public FileBean readDB(){ try { stat=conn.createStatement(); ResultSet rs = stat.executeQuery("select * from ftable;"); /* *将数据库中的数据读到一个byte数组中 *通过ByteArrayInputStream传入ObjectInputStream中 *从ObjectInputStream读出object对象并强制转换成Task */ byte[] data=rs.getBytes(1); ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(data); ObjectInputStream objectInputStream=new ObjectInputStream(byteArrayInputStream); FileBean filebean=(FileBean)(objectInputStream.readObject()); byteArrayInputStream.close(); objectInputStream.close(); rs.close(); stat.close(); conn.close(); log.info("查询对象,关闭流 、sqlite数据库连接"); return filebean; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public void saveDB(FileBean filebean){ try { // stat.executeUpdate("drop table if exists filetable;"); // stat.executeUpdate("create table filetable (filetable);"); stat.executeUpdate("create table if not exists ftable(ftable);"); PreparedStatement prep=conn.prepareStatement("insert into ftable values(?);"); /* *使用ObjectOutputStream将对象序列化, *传入ByteArrayOutputStream中, *最后输出到一个byte类型的数组中 *而这样的数组可以直接存入数据库 */ ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(arrayOutputStream); objectOutputStream.writeObject(filebean); objectOutputStream.flush(); byte[] data=arrayOutputStream.toByteArray(); prep.setBytes(1, data); prep.addBatch(); arrayOutputStream.close(); objectOutputStream.close(); conn.setAutoCommit(false); prep.executeBatch(); conn.setAutoCommit(true); stat.close(); conn.close(); log.info("数据保存,关闭流 、sqlite数据库连接"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { FileBean fBean =new SqliteDB().readDB(); System.out.println(fBean.getFilepath()); } } }
实体类:
import java.io.Serializable; /** * 发送消息列表 * Created by Administrator on 2016/8/12. */ public class FileBean implements Serializable { public String id; public long filesize;//文件大小 public String filename;//文件名字 public String filepath;//文件路径 public String filesource;//文件分享源 public String getFilesource() { return filesource; } public void setFilesource(String filesource) { this.filesource = filesource; } public long getFilesize() { return filesize; } public void setFilesize(long filesize) { this.filesize = filesize; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public String getFilepath() { return filepath; } public void setFilepath(String filepath) { this.filepath = filepath; } @Override public String toString() { return "FileBean{" + "id='" + id + '\'' + ", filesize=" + filesize + ", filename='" + filename + '\'' + ", filepath='" + filepath + '\'' + ", filesource='" + filesource + '\'' + '}'; } public FileBean() { } public String toJsonString() { return "{\"id\":\"" + id + "\",\"filename\":\"" + filename + "\",\"filepath\":\"" + filepath + "\",\"filesize\":\"" + filesize + "\",\"filesource\":\"" + filesource + "\"}"; } }
调用工具类:
package com.darkblue.dynem.util.filehelp; import java.io.File; import java.net.URI; import java.sql.Connection; import java.sql.Statement; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.logging.Logger; import com.coolface.base.entity.NetworkChangeEvent; import com.coolface.base.face.INetworkChangeListener; import com.coolface.base.service.CoolfaceCoreManager; import com.coolface.base.util.CoolfaceUtility; import com.darkblue.dynem.util.sqlitedb.SQLiteJdbcUtils; import com.darkblue.dynem.util.sqlitedb.SqliteDB; import net.coolface.cloudnet.id.ID; import net.coolface.cloudnet.id.IDFactory; /** * Created by Houo on 2017/5/23. */ public class Fileutil { private static boolean isDirectory; public static boolean isDirectory(File file) { isDirectory = false; File[] fileArray = file.listFiles(); if (fileArray.length > 0) { isDirectory = true; } return isDirectory; } /** * 文件夹文件排序 * * @param files * @return */ public static File[] sortFile(File[] files) { List<File> listfile = Arrays.asList(files); Collections.sort(listfile, new CustomComparator()); //按照指定的规则进行一个排序 File[] array = listfile.toArray(new File[listfile.size()]); return array; } /** * 转换文件大小 * * @param * @return */ // 递归取得文件夹(包括子目录)中所有文件的大小 public static long getFileSize(File f) throws Exception// 取得文件夹大小 { long size = 0; File flist[] = f.listFiles(); for (int i = 0; i < flist.length; i++) { if (flist[i].isDirectory()) { size = size + getFileSize(flist[i]); } else { size = size + flist[i].length(); } } return size; } public static String FormetFileSize(long fileS) { DecimalFormat df = new DecimalFormat("#.00"); String fileSizeString = ""; if (fileS < 1024) { fileSizeString = df.format((double) fileS) + "B"; } else if (fileS < 1048576) { fileSizeString = df.format((double) fileS / 1024) + "K"; } else if (fileS < 1073741824) { fileSizeString = df.format((double) fileS / 1048576) + "M"; } else { fileSizeString = df.format((double) fileS / 1073741824) + "G"; } return fileSizeString; } // public static String[] getFileName() { // File file = new File(path); // String[] fileName = file.list(); // return fileName; // } public static List<String> getFileName(String path) { File f = new File(path); List<String> result = new ArrayList<String>(); if (!f.exists()) { System.out.println("文件存储,路径不存在"); return null; } File fa[] = f.listFiles(); for (int i = 0; i < fa.length; i++) { File fs = fa[i]; if (!fs.isDirectory()) { result.add(fs.getName()); List<FileBean> files=new ArrayList<FileBean>(); FileBean file=new FileBean(); file.setId("share_Other" + (int) ((Math.random() * 9 + 1) * 100000)); file.setFilename(fs.getName()); file.setFilesize(fs.length()); file.setFilepath(fs.getAbsolutePath()); // file.setFilesource(CommUtil.localPeerId+""); file.setFilesource(CoolfaceCoreManager.instance().getPeergroup().getPeerID()+""); files.add(file); // SqliteUtils.sharefileDBManager.add(files); new SqliteDB().saveDB(file); /*//1.建立数据库连接 try { SQLiteJdbcUtils sutil = new SQLiteJdbcUtils(); Connection conn = sutil.getConn("data.db"); conn.setAutoCommit(false); Statement stat = conn.createStatement(); stat.executeUpdate( "create table if not exists filetable (id varchar(20), " + "filesize long,filename varchar(20),filepath varchar(20),filesource " + "varchar(20));" );//创建一个表 sutil.execute(""); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } } return result; } public static String[] getFileNames(List<String> filelist) { if(filelist!=null){ String[] file = new String[filelist.size()]; return filelist.toArray(file); } else { return null; } } // public static File[] FilesFilter(File[] files) { // for (int i = 0; i < files.length; i++) { // if (!files[i].isDirectory()) { // return files; // } // } // return files; // } }
调用方法:
Fileutil.getFileName(file.getAbsolutePath()); //此处共享存至本地sqlite 方法调用
相关推荐
SQLite 作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的很好。这篇文章介绍嵌入式数据库产品SQLite...
关于java对SQLite和sql的封装类,可以实现增删改,查,事务操作
sqlite 是一个轻量化的数据库, 多数在移动设备中使用, 该例子在 eclipse 中使用java 调用。
sqlitejdbc 动态调用库。 支持java调用的dll动态库,连接sqlite数据库!连接sqlite数据库!连接sqlite数据库!
java 操作sqlite 数据库增删改,帮助工具类。 查询数据库集合,新增数据,删除数据,修改数据
非常好用的sqlite数据库管理工具、带.net调用库和java驱动包
xerial sqlite jdbc driver,用于java调用sqlite数据库
Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。如果多线程同时读写(这里的指不同的线程用使用的是不同的Helper实例),后面的就会遇到android.database.sqlite.SQLiteException: database is locked...
sqlite3-dbf XBase / FoxPro表到SQLite的转换器关于SQLiteDBF将XBase数据库(尤其是带有...sqlite3-dbf test.dbf | iconv -f cp866 -t utf8 | sqlite3 test.db 调用不带命令行参数的实用程序以查看一些其他选项: $
【项目介绍】 基于Java和CNN网络实现垃圾识别分类安卓APP源码+项目说明文档.zip 1. 功能 基于卷积神经网络的垃圾分类,并将深度学习模型整合到安卓应用,...5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。但在C#中未提供类似功能。 作者利用读写锁(ReaderWriterLock),达到了多线程安全访问的目标。 using System; using System.Collections.Generic; ...
sqlite orm android java
大家好,个人觉得用Sqlite数据库时,经常需要进行机械性的CRUD操作,故对其进行了一下封装,希望能起到抛砖引玉的作用。 目的:封装共有的CRUD 下面简单的说一下使用步骤,如果觉得多余,可以无视。 1. 实现自己...
安卓调用wxsqlite3对sqlite数据库进行加密, 工程中的so文件是通过wxsqlite3与sqlite源码进行封装后的dll编译而成, 里面包含java封闭源码,很不错。绝对超值。
摘要:每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作...在DBAdapter.java文件中,定义清单1中的常量。 清单1 定义DBAdapter.java文件中的常量 package net.learn2develop.Database;
封装了SQLite的基本操作,只需要将源码导入工程,修改相应的字段名称,就能直接调用相应的封装好的方法。数据库的使用就是如此简单。
Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。如果多线程同时读写(这里的指不同的线程用使用的是不同的Helper实例),后面的就会遇到android.database.sqlite.SQLiteException: database is locked...
该项目的目标是为SQLite C库提供一个瘦包装器,并提供类似于Sqlite4java的API。 由于使用Scala Native,不再需要JNI,因此与Sqlite4ava包装器相比,SQLite4S的开销应较低。 但是,性能比较尚未完成。支持的Sqlite4...
Matlab2012 Rb 的java调用matlab的jar包必备文件