Java数据库操作

来源:互联网 发布:个股技术分析软件 编辑:程序博客网 时间:2024/06/06 04:43

一、准备工作


首先是部署数据库。这里以MySql为例,到官网下载MySql服务器安装包。笔者是在Windows上面测试,所以下载的是可执行的安装包,安装完后数据库服务自动启动。
然后是下载数据库驱动,官网上称作MySql connectors for Java。
最后是在项目的Build Path里面加入刚才下载的驱动Jar包。

二、代码实例


package adam;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DBManager {// 用户名private String user = "";// 密码private String password = "";// 主机private String host = "";// 数据库名字private String database = "";/* *  * private String * url="jdbc:mysql://"+host+"/"+"useUnicode=true&characterEncoding=GB2312"; */private String url = "";private Connection con = null;Statement stmt;/** *  * 根据主机、数据库名称、数据库用户名、数据库用户密码取得连接。 *  * @param host *            String *  * @param database *            String *  * @param user *            String *  * @param password *            String */public DBManager(String host, String database, String user, String password) {this.host = host;this.database = database;this.user = user;this.password = password;// 显示中文this.url = "jdbc:mysql://" + host + "/" + database+ "?useUnicode=true&characterEncoding=GB2312";try {Class.forName("org.gjt.mm.mysql.Driver");}catch (ClassNotFoundException e) {System.err.println("class not found:" + e.getMessage());}try {con = DriverManager.getConnection(this.url, this.user,this.password);// 连接类型为ResultSet.TYPE_SCROLL_INSENSITIVE,// ResultSet.CONCUR_READ_ONLYstmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);}catch (SQLException a) {System.err.println("sql exception:" + a.getMessage());}}/** *  * 返回取得的连接 */public Connection getCon() {return con;}/** *  * 执行一条简单的查询语句 *  * 返回取得的结果集 */public ResultSet executeQuery(String sql) {ResultSet rs = null;try {rs = stmt.executeQuery(sql);}catch (SQLException e) {e.printStackTrace();}return rs;}/** * 执行一条简单的更新语句 * 执行成功则返回true */@SuppressWarnings("finally")public boolean executeUpdate(String sql) {boolean v = false;try {v = stmt.executeUpdate(sql) > 0 ? true : false;}catch (SQLException e) {e.printStackTrace();}finally{return v;}}/** * 输出所有数据库记录 */public void outputDB(){ResultSet rs;rs = executeQuery("SELECT * FROM student");try {while (rs.next()) {System.out.printf("%-6d\t", rs.getInt("id"));System.out.printf("%-12s\t", rs.getString("name"));System.out.println(rs.getInt("age"));}} catch (Exception e) {}}/** *获取数据库中最大id值 */public int getMaxId(){ResultSet rs = executeQuery("SELECT MAX(id) FROM student");try{return rs.next() ? rs.getInt(1) : 0;}catch(SQLException e){e.printStackTrace();return 0;}}public static void main(String[] args) {DBManager dbm = new DBManager("localhost", "mydb", "root", "bourne");dbm.outputDB();/* * 插入一行 */int maxId = dbm.getMaxId();String sql = String.format("INSERT INTO student VALUES(%d, 'Jack', 23)", maxId+1);//因为id是自增长的,插入值为零的话则自动变为历史最大id值加1//String sql = "INSERT INTO student VALUES(0, 'jack', 23)";if(!dbm.executeUpdate(sql)){System.out.print("Fail to insert");}else{System.out.println("table after inserted:");dbm.outputDB();}/* * 修改刚插入的行 */sql = "UPDATE student SET name='Mary' WHERE name='Jack'";if(!dbm.executeUpdate(sql)){System.out.print("Fail to update");}else{System.out.println("table after modified:");dbm.outputDB();}/* * 删除刚修改的行 */sql = "DELETE FROM student WHERE name='Mary'";if(!dbm.executeUpdate(sql)){System.out.print("Fail to delete");}else{System.out.println("table after deleted:");dbm.outputDB();}}}

0 0
原创粉丝点击