1. 程式人生 > >ubuntu環境下,Java連線MySQL資料庫

ubuntu環境下,Java連線MySQL資料庫

其實,在ubuntu環境下,Java的程式設計與windows系統的差別並不是很大。畢竟Java是跨平臺的面象物件的程式語言。

工具:eclipse、MySQL、MySQL workbench(視覺化軟體)

jar包:mysql-connector-java-5.1.44-bin.jar、commons-dbutils-1.7.jar

下載:MySQL:(https://dev.mysql.com/downloads/connector/j/)

   dbutils:(http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi)下載對應的zip壓縮包,解壓選擇名字最短的jar包即可。

對於jar包,我們需要將它配置到開發工具中去。如圖所示,

第一步,我們先在專案中建立一個目錄,通常就叫jar。叫啥都行。然後將jar包ctrl+C+V進去就好了。

第二步,右鍵,選擇build path,裡面有個奶瓶標誌的東西。叫啥不記得了,記住奶瓶形狀就好啦。我這裡可能配置過了,沒了。

如果在Referenced Libraries看見如圖所示的jar包,就成功啦。很簡單的。

jar包搞定後,我們就上程式碼了。

看自己寫的程式碼是真的醜啊,但是還是能行的。稍微給大家解析一下。

本著面象物件的原則,單獨用了一個包,一個類,目的就是為了返回一個Connection物件。

首先是初始化,driver、URL、user、password,大家看著改成自己的就好。

在url中加入  ?useUnicode=true&characterEncoding=UTF-8  的目的是為了防止中文寫入資料庫亂碼問題。

初始化後就是載入驅動,然後得到Connection物件,最後提供一個方法返回該物件。

public class DBHelp {
	
	private static Connection conn;
	static {
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/qbxbf?useUnicode=true&characterEncoding=UTF-8";
		String user = "root";
		String password = "123";
		
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url,user,password);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getCoon() {
		return conn;
	}
}

關於dbutils,這是一個Apache開源的資料庫處理包。功能非常強大,大家自行學習去吧,嘿嘿。

QueryRunner是dbutils的一個物件。利用該物件可以進行增刪改查。

	private static void write2DB(WX wx) throws SQLException {
		Connection conn = DBHelp.getCoon();
		QueryRunner qr = new QueryRunner();
		String sql = "insert into wx(title,author,institution,keywords,abstracts,journal,period) values(?,?,?,?,?,?,?)";
		Object[] params = {wx.getTitle(),wx.getAuthor(),wx.getInstitution(),wx.getKeywords(),wx.getAbstracts(),wx.getJournal(),wx.getPeriod()};
		qr.update(conn, sql, params);
	}

通過上述方法即可將資料寫入到資料庫了 。接下來,再將一下從資料庫到txt文字。

在這裡面有一個dbutils很強大的功能,就是BeanListHandler。當然了,如果只是一個實體物件,可以用BeanHandler。

	public static void main(String[] args) throws Exception {
		Connection conn = DBHelp.getCoon();
		QueryRunner qr = new QueryRunner();
		String sql = "select * from wx order by period desc";
		List<WX> wx_list = qr.query(conn, sql, new BeanListHandler<WX>(WX.class));
		
		File file = new File("/home/phe/桌面/情報學報2015_Y.txt");
		if (!file.exists()) {
		    file.createNewFile();
		}
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true)));
		for(WX wx: wx_list) {
			bw.write(wx.getJournal());bw.newLine();bw.flush();
			bw.write("第"+wx.getPeriod()+"期");bw.newLine();bw.flush();
			bw.write("Title:"+wx.getTitle());bw.newLine();bw.flush();
			bw.write("Author:"+wx.getAuthor());bw.newLine();bw.flush();
			bw.write("Institution:"+wx.getInstitution());bw.newLine();bw.flush();
			bw.write("Keywords:"+wx.getKeywords());bw.newLine();bw.flush();
			bw.write("Abstract:"+wx.getAbstracts());bw.newLine();bw.flush();
			bw.newLine();
		}
		bw.close();
	}


PS: 在這些程式碼中,有一個實體類(WX)。實體類的欄位設定跟資料庫的列名一致即可