一聚教程网:一个值得你收藏的教程网站

热门教程

java中实现excel数据与sqlite3数据互转

时间:2022-06-29 03:15:04 编辑:袖梨 来源:一聚教程网

java与Excel的连接用到了jxl.jar开源包,与SQLite3的连接用到了sqlitejdbc-v056.jar这个开源包,两个开源包打包下载:传送门

如果使用的eclipse做开发,解压后按下所示导入两个开源包即可:

对着工程右击>Build Path>Add External Archives,然后选择这两个开源包引入即可。

------------

1,java与Excel的连接:

(jxl.jar开源包的源码,以及使用API下载:传送门 )

java与Excel的连接,只需引入jxl的相关包(见最下方源码),即可实现与Excel文件的连接;

 代码如下 复制代码


String s = "" ;File file = new File("D:hello1.xls);WorkBook wb = Workbook.getWorkbook(file); //创建一个工作簿对象wb,该对象的引用指向某个待读取的Excel文件
Sheet sheet = wb.getSheet(0); // 创建一个工作簿wb中的工作表对象(0代表第一张工作表,工作簿、工作表的关系,就好比一个记账本和账本上某页记账表的关系)
int stRows = sheet.getRows(); //得到当前工作表中所有非空行的数目;     for(int i=0;i   Cell cell = sheet.getCell(j, i); //创建一个单元格对象,来存放从sheet的(第j列,第i行)读取的单元格;
  s += cell.getContents(); //单元格.getContents()方法,会从当前单元格对象中获得一个已经转换为字符串类型的字符串,如需获得原型(如整形数据),可自查API中相关方法;
 }

使用完后,使用wb.close()的方法关闭文件流即可。

------------

2,java与SQLite3的连接:

java与SQLite3的连接,以及写入数据,需要如下的准备工作:

1,通过Class.forName()方法,载入需要连接数据库的类

 代码如下 复制代码
Class cl = Class.forName("org.sqlite.JDBC") ;

//如果想要了解关于这个方法的意义 2,之后与数据库建立连接,代码如下:

 代码如下 复制代码

            //通过JDBC:Sqlite与D:123目录下的AllClasses.db文件(SQLite3的数据库文件)建立连接;
        Connect conn = DriverManager.getConnection("jdbc:sqlite:d:/123/AllClasses.db");
            Statement stm =conn.createStatement();
           
           //下面这句sql语句的意思是:如果数据库中没有"OtherClasses"这张表,则创建之;
       //加上自加的KC_ID,一列共九个数据;
            stm.executeUpdate("create table if not exists OtherClasses(" +
                    "KC_ID integer primary key autoincrement," +
                    "KC_NAME vachar(15) ," + "KC_TEACHER vachar(5) ," + 
                    "KC_CLASSES vachar(10) ," + "KC_ROOM vachar(6) ," + 
                    "KC_ENDTIME vachar(5) ," + "KC_YUANXI vachar(4) ," +    
                    "KC_POSITION vachar(3) ," + "KC_MARK vachar(3) );");   
           
         /* PreparedStatement 类,通俗来讲,就像文件流的BufferedReader一样,只不过它是用来存放Sql语句的缓冲内容(如有精力,可参考java API),
            *   1,PreparedStatement prs = conn.prepareStatement("insert into OtherClasses values (?,?,?,?,?,?,?,?,?);");
       *   这句话用来预定义你即将插入的一列数据规范,如上那个方法,就是说我准备每次暂存9个待插入的数据(9个问号);
       *  2,prs 的setString()用来设置Sql语句的内容,一组共九个参数,setString(2,"nihao")就是说,设置本行待插入的第二个数据为“nihao"(从2开始,共9个数据,为什么不是从1开始?因为1是”KC_ID integer primary key autoincrement“,它会根据本行数据添加情况自增,无需赋值);
       *   3,一组九个数据设定完成后,通过prs.addBatch()方法,将这次的批处理命令添加到prs中去,
       *   4,通过 conn.setAutoCommit(false); prs.executeBatch(); conn.setAutoCommit(true);这三个方法,便可以将缓存于prs中的一批sql执行命令,真正执行,并将之前一组九个数据,插入到数据库文件中去.
        */
       PreparedStatement prs = conn.prepareStatement("insert into OtherClasses values (?,?,?,?,?,?,?,?,?);");
       // 下面这段代码,便可以插入一列数据;
       // 为什么从2开始?因为第一个数据是自增型计数器,详见上面第2条解释;
       for( int i = 2; i<9; i++ ) {
          prs.setString( i, "本次插入" + i ) ;
       }
            prs.addBatch();
            conn.setAutoCommit(false);
            prs.executeBatch();
        conn.setAutoCommit(true);

上面一段代码,连续执行三次后,效果如下图

(想要这款图形界面的SQLite3数据库浏览器的朋友,):

热门栏目