`

sqlite在java项目中调用.

阅读更多

 

 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 方法调用

 

分享到:
评论

相关推荐

    JAVA在SQLite嵌入式数据库中的应用.rar

    SQLite 作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的很好。这篇文章介绍嵌入式数据库产品SQLite...

    SQLite sql jdbc基于java的封装类

    关于java对SQLite和sql的封装类,可以实现增删改,查,事务操作

    java 调用 sqlite 数据库

    sqlite 是一个轻量化的数据库, 多数在移动设备中使用, 该例子在 eclipse 中使用java 调用。

    sqlitejdbc.dll

    sqlitejdbc 动态调用库。 支持java调用的dll动态库,连接sqlite数据库!连接sqlite数据库!连接sqlite数据库!

    java 操作sqlite 数据库增删改

    java 操作sqlite 数据库增删改,帮助工具类。 查询数据库集合,新增数据,删除数据,修改数据

    sqlite数据库管理工具、带.net调用库和java驱动包

    非常好用的sqlite数据库管理工具、带.net调用库和java驱动包

    sqlite-jdbc-3.23.1

    xerial sqlite jdbc driver,用于java调用sqlite数据库

    sqlite数据库锁定问题.zip

    Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。如果多线程同时读写(这里的指不同的线程用使用的是不同的Helper实例),后面的就会遇到android.database.sqlite.SQLiteException: database is locked...

    sqlite3-dbf:XBaseFoxPro表到SQLite的转换器

    sqlite3-dbf XBase / FoxPro表到SQLite的转换器关于SQLiteDBF将XBase数据库(尤其是带有...sqlite3-dbf test.dbf | iconv -f cp866 -t utf8 | sqlite3 test.db 调用不带命令行参数的实用程序以查看一些其他选项: $

    基于Java和CNN网络实现垃圾识别分类安卓APP源码+项目说明文档.zip

    【项目介绍】 基于Java和CNN网络实现垃圾识别分类安卓APP源码+项目说明文档.zip 1. 功能 基于卷积神经网络的垃圾分类,并将深度学习模型整合到安卓应用,...5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!

    C#解决SQlite并发异常问题的方法(使用读写锁)

    Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。但在C#中未提供类似功能。 作者利用读写锁(ReaderWriterLock),达到了多线程安全访问的目标。 using System; using System.Collections.Generic; ...

    使用ormlite实现sqlite持久demo

    sqlite orm android java

    Android 对sqlite的封装,实现CRUD

    大家好,个人觉得用Sqlite数据库时,经常需要进行机械性的CRUD操作,故对其进行了一下封装,希望能起到抛砖引玉的作用。 目的:封装共有的CRUD 下面简单的说一下使用步骤,如果觉得多余,可以无视。 1. 实现自己...

    安卓调用wxsqlite3对sqlite数据库进行加密

    安卓调用wxsqlite3对sqlite数据库进行加密, 工程中的so文件是通过wxsqlite3与sqlite源码进行封装后的dll编译而成, 里面包含java封闭源码,很不错。绝对超值。

    Android创建和使用数据库详细指南.doc

    摘要:每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作...在DBAdapter.java文件中,定义清单1中的常量。 清单1 定义DBAdapter.java文件中的常量 package net.learn2develop.Database;

    SQLite数据库使用工具类

    封装了SQLite的基本操作,只需要将源码导入工程,修改相应的字段名称,就能直接调用相应的封装好的方法。数据库的使用就是如此简单。

    Android例子源码解决多线程读写sqlite数据库锁定问题

    Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。如果多线程同时读写(这里的指不同的线程用使用的是不同的Helper实例),后面的就会遇到android.database.sqlite.SQLiteException: database is locked...

    sqlite4s:SQLite C库的Scala本机包装

    该项目的目标是为SQLite C库提供一个瘦包装器,并提供类似于Sqlite4java的API。 由于使用Scala Native,不再需要JNI,因此与Sqlite4ava包装器相比,SQLite4S的开销应较低。 但是,性能比较尚未完成。支持的Sqlite4...

    Matlab2012 Rb 的java调用matlab的jar包必备文件

    Matlab2012 Rb 的java调用matlab的jar包必备文件

Global site tag (gtag.js) - Google Analytics