JavaWeb

  • Java数据库操作

  1. 加载数据库驱动(一般使用Class.forName驱动程序规范写法的模式加载驱动)
  • 加载数据库连接驱动的标准写法
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver);
  • 加载MySQL数据库驱动的标准写法
Class.forName("com.mysql.jdbc.Driver);
  • 加载SQL Server数据库驱动的标准写法
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver);
  1. 创建连接(Java中使用Connection接口描述数据库连接,通过DriverManager类的getConnection方法返回数据库连接)
Connection conn=null;
conn=DriverManager.getConnection(dburl,username,password);
  1. 创建状态
PreparedStatement stmt=null;
stmt=conn.preparedStatment(sql,resultSetType,resultSetConcurrency);
  1. 执行SQL语句并返回结果集(一般来说,select通过PreparedStatement状态的executeQuery执行,并返回结果集;而insert、delete、update三种DML(Data Manipulation Language)操作通过PreparedStatement状态的executeUpdate执行,返回int用于描述DML涉及的记录条数
    结果集游标rs定义为ResultSet类型,初始时指向第一条记录的上方。while(rs.next())可以看成两步操作:1.判断下一个指向是否有记录,有则返回true,反之为false。2.游标移动到下一个指向处

  • Java连接Access、MySQL数据库操作

JDK1.8中不再包含Access桥接驱动(删除公告:https://blogs.oracle.com/Lance/entry/removal_of_the_jdbc_odbc)
因此不再支持jdbc-odbc桥接方式,需要安装jdk1.6环境来编译。所以这里用Access_JDBC30.jar访问access,将Access_JDBC30.jar下载后,放在jre/lib/ext文件夹中。
Access_JDBC30.jar下载地址:http://www.hxtt.com/access.zip

  • SELECT查询Access数据库
package database;
import java.sql.*;
public class accessQuery {
    public static void main(String[] args) throws SQLException{
        String dburl="jdbc:Access:///C:/Users/A1718/Documents/Database1.accdb";
        //原来为:dburl="jdbc:odbc:driver={Microsoft Access Driver(*.mdb,*.accdb)};"+"DBQ=D:/student.accdb";
        Connection conn=null;
        PreparedStatement stmt=null;
        ResultSet rs=null;
        int count=0;
        String stuid_key="100";
        double math_key=0;
        try{
            Class.forName("com.hxtt.sql.access.AccessDriver");
            //原来为:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("驱动加载成功");
            conn=DriverManager.getConnection(dburl);
            String sql="select * from stuinfo where id > ? and ma > ?";
            stmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            stmt.setString(1, stuid_key);
            stmt.setDouble(2, math_key);
            rs=stmt.executeQuery();
            System.out.println("StuID\t"+"StuName\t"+"Math\t"+"EN\t"+"HI\t");
            while(rs.next()){
                System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getDouble(3)+"\t"+rs.getDouble(4)+"\t"+rs.getDouble(5)+"\t");
            }
            System.out.println("--------------------------------");
            rs.previous();
            count=rs.getRow();
            System.out.println("检索出"+count+"条记录");
        }
        catch(SQLException e){
            System.out.println(e);
        }
        catch(ClassNotFoundException e){
            System.out.println("not found driver");
        }
        finally{
            rs.close();
            stmt.close();
            conn.close();
            System.out.println("over");
        }
    }
}

MySQL:

String dburl="jdbc:mysql://localhost:3306/student;
Class.forName("com.mysql.jdbc.Driver);
  • INSERT、DELETE、UPDATE插入Access数据库
if(!rs.next()){
        String insertsql="insert into stuinfo values(?,?,?,?,?)";
        //“delete from stuinfo where stuid=?”
        //“update stuinfo set stuname=?,match=?where stuname=?”
        stmt=conn.preparedStatement(insertsql);
        stmt.setString(1,insert_stuid);
               .
               .
               .
        stmt.executeUpdate();
}
  • 利用结果集添加、删除、更新记录
    设置ResultSet.CONCUR_UPDATABLE
//插入
rs.moveToInsertRow();
rs.updateString(1,insert_string);
              .
              .
              .
rs.insertRow();
//删除
rs.deleteRow();
rs.previous();

你可能感兴趣的:(JavaWeb)