日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

用java连接Excel和SQLite3,实现从excel文件读取数据并将其存入SQLite3数据库中

發布時間:2023/12/18 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用java连接Excel和SQLite3,实现从excel文件读取数据并将其存入SQLite3数据库中 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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:\\hello\\1.xls);
WorkBook wb = Workbook.getWorkbook(file); //創建一個工作簿對象wb,該對象的引用指向某個待讀取的Excel文件 Sheet sheet = wb.getSheet(0); // 創建一個工作簿wb中的工作表對象(0代表第一張工作表,工作簿、工作表的關系,就好比一個記賬本和賬本上某頁記賬表的關系) int stRows = sheet.getRows(); //得到當前工作表中所有非空行的數目;
for(int i=0;i<stRows;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") ; //如果想要了解關于這個方法的意義,可看百度來的這篇文章:http://goo.gl/OpXUG

?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數據庫瀏覽器的朋友,可以到此下載:傳送門):

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

3,java如何緩存數據實現excel與sqlite的連接?

我使用了ArrayList來緩存數據。

每一行的數據,存入一個新new出來的ArrayList<String>中;

當讀取完該行的所有數據后,將ArrayList<String>存入一個已經new好的 ArrayList<ArrayList<String>> 當中,直到數據表所有數據被讀取出來。

具體操作,可參考下方提供的源碼中的內容(只需查看ReadDataFromExcel() 和?WriteDataToSQLite() 這兩個方法即可)。

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

程序源碼說明:

源碼內容經過自己精心整理,注釋也很詳細,是盡量做到每個小模塊都附上一段注釋,所以想要學習的就快快下載吧!

本程序源碼下載:傳送門

還是第一次寫編程技術分享類的博文,如有不到之處,還望見諒指正。

如有問題,可在下方留言,或者跟我在微博上交流。

轉載于:https://www.cnblogs.com/lyfing/archive/2012/06/27/2566074.html

總結

以上是生活随笔為你收集整理的用java连接Excel和SQLite3,实现从excel文件读取数据并将其存入SQLite3数据库中的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。