`

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数据库操作时需要注意日期时间,代码中做了注释。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics