Java數據庫操作入門

java中要連接mysql首先需要下載mysql驅動,然後在項目中添加對mysql驅動的引用。

 

然後需要在mysql中建表,我測試中用的表定義如下:

CREATE TABLE `test_notebook` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(60) NOT NULL,
  `content` longtext,
  `createtime` datetime NOT NULL,
  `ip` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8$$

 

然後就是代碼了,如下測試代碼:

package com.yukaizhao;

import java.sql.*;

public class HelloDatabase {
	public static void main(String[] args){
		Connection conn = null;
		try{
			conn = getConnection();
			System.out.println("getConnection successfully");
			
			//查詢
			String sql = "select * from test_notebook";
			//準備執行,設置sql參數
			PreparedStatement statement = conn.prepareStatement(sql);
			
			//執行查詢
			ResultSet result = statement.executeQuery();
			
			//獲得數據
			for(boolean valid = result.first();valid ;valid = result.next()){
				int id = result.getInt("id");
				String name = result.getString("name");
				String content = result.getString("content");
				Date date = result.getDate("createtime");
				String ip = result.getString("ip");
				System.out.println(id);
				System.out.println(name);
				System.out.println(content);
				System.out.println(date);
				System.out.println(ip);
			}
			
			//關閉statement
			statement.close();
			
			//向數據庫中插入數據
			String sqlInsert = "INSERT INTO `notes`.`test_notebook`(`name`,`content`,`createtime`,`ip`)VALUES(?,?,?,?)";
			PreparedStatement insertState = conn.prepareStatement(sqlInsert);
			insertState.setString(1, "hello java");
			insertState.setString(2,null);
			java.util.Date now = new java.util.Date();
			//java.sql.Date sqlNow = new java.sql.Date(now.getTime());
			//insertState.setDate(3,sqlNow);
			//java.sql.Time sqlTime = new java.sql.Time(now.getTime());
			//insertState.setTime(3, sqlTime);
			//注意數據庫中的datetime字段對應的是java.sql.Timestamp,而java.sql.Date會只保留日期部分,而java.sql.Time則只是時間部分
			java.sql.Timestamp sqlTimeStamp = new java.sql.Timestamp(now.getTime());
			insertState.setTimestamp(3, sqlTimeStamp);
			insertState.setString(4, "127.0.0.1");
			insertState.executeUpdate();
			
			//獲得最新插入數據的id
			String sqlIdentity = "SELECT last_insert_id() as lastid";
			Statement idState = conn.createStatement();
			ResultSet rsId = idState.executeQuery(sqlIdentity);
			rsId.first();
			int id = rsId.getInt(1);
			System.out.println(String.format("newid is %d",id));
			
		}catch(Exception ex){
			ex.printStackTrace();
		}finally{
			if(conn != null){
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
				conn = null;
			}
		}
		
	}
	
	static Connection getConnection()
		throws	InstantiationException, 
			IllegalAccessException, 
			ClassNotFoundException,
			SQLException{
		Class.forName("com.mysql.jdbc.Driver").newInstance();
		String defaultDomain = "localhost:3306";
		String defaultName = "notes";
		String defaultUser = "root";
		String defaultPass = "root";
		Connection conn = DriverManager.getConnection("jdbc:mysql://" + defaultDomain + "/" + defaultName + "?user=" + defaultUser + "&password=" + defaultPass); 
		return conn;
	}
}

 

java數據庫操作時需要注意日期時間,代碼中做了註釋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章