程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 【Mysql】Java中對Mysql數據庫的增刪改查、Java的System類

【Mysql】Java中對Mysql數據庫的增刪改查、Java的System類

編輯:MySQL綜合教程

【Mysql】Java中對Mysql數據庫的增刪改查、Java的System類


這部分也是所謂JDBC、網站數據源的內容,把名字弄得很高深似得,實際上只是Java中對Mysql數據庫的增刪改查的內容。非常簡單,之前寫了這麼多Mysql的內容,沒好好總結一下,實在是不應該。今天就實現一個Java中對Mysql數據庫的增刪改查,隨便帶點Java取出當前系統的系統名與系統時間的知識,完成一個還算有點意思的小例子。

一、基本目標

首先,在Mysql數據庫中有一張名為testtable的空表,id為自增列,username,class都是文本列,但是class裡面都存放數字,也就是整形,我們以後在Java中取出這一列要當作整形處理。

\

每次執行程序,程序都會向裡面的username插入當前的系統名(不會變的)與當前系統的時分秒(會變的),毫秒、年月日就不插入了,因為超出整形的范圍,這也不是什麼問題,但是為了避免程序過於復雜,就不引入《【Java】自從有了BigInteger,我再也不用擔心要處理的數據有多大了》(點擊打開鏈接)的內容了。

\

二、制作過程<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+MaGiytfPyKOsSmF2YdKqway90015c3Fsyv2+3b/io6yyu8/xYXNwwbS900FjY2Vzc6OsYyPBtL3TU1FMIFNlcnZlcsTH0fmjrLa8ysfX1LT4usO1xKGjsc++ucTHysfIy7zSzqLI7bXExeSxuKOsy+TIu87Sw8e7ucrHvq2zo8q508N3aW5kb3dzwLSx4LPMoaK/qreio6y1q8rHztLDx7u50qq00834yc/PwtTY0ru49m15c3FsLWNvbm5lY3Rvci1qYXZhLTUuMS4zMi5qYXK1xLarzvejrNXiuPa2q8731NpNeXNxbLXEudnN+NLRvq3O3rTTv8m/vMHLo6zA78Pmw7vT0L/nxr3MqLXEsOaxvqOsvs3Su7j2V2luZG93c7Dmsb61xG1zabCy17DOxLz+o6y49867u7nKx834yc/L0dK7z8JteXNxbC1jb25uZWN0b3ItamF2YbDJo6yw5rG+usWyu9bY0qqjrL7Nw7u8+7n9tPrC69C01f3It7u5way908qnsNy1xKGjPC9wPgo8cD4yoaLIu7rzo6zU2sTjtcS5pLPMxL/CvM/Cw+bQwr2o0ru49mxpYs7EvP680KOssNHV4rj2bXlzcWwtY29ubmVjdG9yLWphdmEtNS4xLjMyLmphcrfFvfjIpaOssru90NXiuPbD+9fW0rK/ydLUo6y1q8rHvt3LtdK1xNq7+bG+trzV4tH5xaqjrMSz0Km5q8u+srvV4tH5yfXWwbu5u+HFqrj4yc/D5sTHuPbS0b6t1L3AtNS9sru74dC0tPrC67XEvq3A7cLutcQ8L3A+CjxwPjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20150206/2015020609522745.png" alt="\">

3、之後,右擊你的工程選擇“屬性”

\

4、在Java Build Path的標簽頁,選擇Add JARs...,在lib文件夾中找到剛才放進來的mysql-connector-java-5.1.32.jar,之後點擊確定就可以開始愉快地寫代碼了

\

5、首先你要在開頭引入下面的東西:

import java.sql.*;
import java.text.*;
import java.util.*;
import java.util.Date;
為了能夠獲取當前的時間,同時下面也使用到ArrayList動態數組,這東西是什麼,請翻我之前的《【Java】Java中的Collections類——Java中升級版的數據結構》(點擊打開鏈接),必須在文件頭引入import java.util.*;,由於sql類裡面同樣有Date()這個類,因此必須多加一句import java.util.Date;消除歧義,import java.text.*;同樣是為了之後對系統當前的時間處理的時候使用了,不然只能獲取從1970年元旦到現在的毫秒數

6、之後寫一個數據庫鏈接類Dbcon

class Dbcon {
	// 此處連接數據庫,獨立開一個類,以後操作數據庫的每次連接就不用寫這麼多
	public Connection getCon() {
		Connection con = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			// 其中test是我們要鏈接的數據庫,user是數據庫用戶名,password是數據庫密碼。
			// 3306是mysql的端口號,一般是這個
			// 後面那串長長的參數是為了防止亂碼,免去每次都需要在任何語句都加入一條SET NAMES UTF8
			String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useOldAliasMetadataBehavior=true";
			String user = "root";
			String password = "root";
			con = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}
}

7、之後就是整個程序的核心如何操作數據庫:

public class JavaDbTest {
	public static void main(String[] args) {
		//這裡是數據庫的鏈接
		Connection con = new Dbcon().getCon();
		String sql = null;
		// 這樣能夠獲取當前操作系統的名字
		
		//數據庫插入操作的開始,修改與查詢的道理一樣,就不做了,請修改下面sql字符串中的sql語句
		String username = System.getProperty("os.name");
		// 這樣能夠獲取當前的時間,但必須在文件頭引入import java.util.*;
		// 由於sql類裡面同樣有Date()這個類,因此必須多加一句import java.util.Date;消除歧義
		String classString = new SimpleDateFormat("hhmmss").format(
				new Date(System.currentTimeMillis())).toString();
		sql = "INSERT INTO testtable(username,class) VALUES ('" + username
				+ "','" + classString + "') ";
		// 注意:操作數據庫的語句Insert into,update與查詢數據庫的語句select在Java的語句是不同的
		// 操作數據庫為con.createStatement().execute(sql);
		// 查詢數據庫為rs=con.prepareStatement(sql).executeQuery();且查詢結果必須被ResultSet對象rs接住
		try {
			con.createStatement().execute(sql);
			// 弄完之後人走帶門
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		sql = "select * from testtable";
		ResultSet rs = null;
		// 這幾個存放查詢結果的ArrayList一定要放在try-catch的外圍,注意變量有效范圍
		ArrayList<Integer> idArraylist = new ArrayList<Integer>();
		ArrayList<String> usernameArraylist = new ArrayList<String>();
		ArrayList<Integer> classArraylist = new ArrayList<Integer>();
		try {
			rs = con.prepareStatement(sql).executeQuery();
			// 這個循環的結果是把整個查詢結構讀出來
			while (rs.next()) {
				// 取出各個列打印出來
				idArraylist.add(rs.getInt("id"));
				usernameArraylist.add(rs.getString("username"));
				// 縱使class一列全是數字,但是由於這一列用的是varchar來存儲
				// 如果要把class當作整形處理,因此不可用rs.getInt,只能先以String取出來再擦寫為整形
				rs.getString("class");
				classArraylist.add(Integer.parseInt(rs.getString("class")));
			}
			// 弄完之後人走帶門
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("id username class");
		for (int i = 0; i < idArraylist.size(); i++)
			System.out.println(idArraylist.get(i) + " "
					+ usernameArraylist.get(i) + " " + classArraylist.get(i));
	}

}

8、至此,整個程序連起來就是這樣的:

package test;

import java.sql.*;
import java.text.*;
import java.util.*;
import java.util.Date;

class Dbcon {
	// 此處連接數據庫,獨立開一個類,以後操作數據庫的每次連接就不用寫這麼多
	public Connection getCon() {
		Connection con = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			// 其中test是我們要鏈接的數據庫,user是數據庫用戶名,password是數據庫密碼。
			// 3306是mysql的端口號,一般是這個
			// 後面那串長長的參數是為了防止亂碼,免去每次都需要在任何語句都加入一條SET NAMES UTF8
			String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useOldAliasMetadataBehavior=true";
			String user = "root";
			String password = "root";
			con = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}
}

public class JavaDbTest {
	public static void main(String[] args) {
		//這裡是數據庫的鏈接
		Connection con = new Dbcon().getCon();
		String sql = null;
		// 這樣能夠獲取當前操作系統的名字
		
		//數據庫插入操作的開始,修改與查詢的道理一樣,就不做了,請修改下面sql字符串中的sql語句
		String username = System.getProperty("os.name");
		// 這樣能夠獲取當前的時間,但必須在文件頭引入import java.util.*;
		// 由於sql類裡面同樣有Date()這個類,因此必須多加一句import java.util.Date;消除歧義
		String classString = new SimpleDateFormat("hhmmss").format(
				new Date(System.currentTimeMillis())).toString();
		sql = "INSERT INTO testtable(username,class) VALUES ('" + username
				+ "','" + classString + "') ";
		// 注意:操作數據庫的語句Insert into,update與查詢數據庫的語句select在Java的語句是不同的
		// 操作數據庫為con.createStatement().execute(sql);
		// 查詢數據庫為rs=con.prepareStatement(sql).executeQuery();且查詢結果必須被ResultSet對象rs接住
		try {
			con.createStatement().execute(sql);
			// 弄完之後人走帶門
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		sql = "select * from testtable";
		ResultSet rs = null;
		// 這幾個存放查詢結果的ArrayList一定要放在try-catch的外圍,注意變量有效范圍
		ArrayList<Integer> idArraylist = new ArrayList<Integer>();
		ArrayList<String> usernameArraylist = new ArrayList<String>();
		ArrayList<Integer> classArraylist = new ArrayList<Integer>();
		try {
			rs = con.prepareStatement(sql).executeQuery();
			// 這個循環的結果是把整個查詢結構讀出來
			while (rs.next()) {
				// 取出各個列打印出來
				idArraylist.add(rs.getInt("id"));
				usernameArraylist.add(rs.getString("username"));
				// 縱使class一列全是數字,但是由於這一列用的是varchar來存儲
				// 如果要把class當作整形處理,因此不可用rs.getInt,只能先以String取出來再擦寫為整形
				rs.getString("class");
				classArraylist.add(Integer.parseInt(rs.getString("class")));
			}
			// 弄完之後人走帶門
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("id username class");
		for (int i = 0; i < idArraylist.size(); i++)
			System.out.println(idArraylist.get(i) + " "
					+ usernameArraylist.get(i) + " " + classArraylist.get(i));
	}

}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved