常用数据库的驱动程序及JDBC

常用数据库的驱动程序及JDBC:
Oracle数据库:
驱动程序包名:ojdbc14.jar
驱动类的名字:oracle.jdbc.driver.OracleDriver
JDBC URL:jdbc:oracle:thin:@dbip:port:databasename
说明:驱动程序包名有可能会变
JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。红色字体部分需要根据数据库的安装情况填写。其中各个部分含义如下:
dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为1521。
databasename –为数据库的SID,通常为全局数据库的名字。
SQL Server数据库
驱动程序包名:msbase.jar mssqlserver.jar msutil.jar
驱动类的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver
JDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename
说明:驱动程序包名有可能会变
JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。红色字体部需要根据数据库的安装情况填写。其中各个部分含义如下:
dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为1433。
databasename –数据库的名字。
MySQL数据库
驱动程序包名:mysql-connector-java-3.1.11-bin.jar
驱动类的名字:com.mysql.jdbc.Driver
JDBC URL:jdbc:mysql://dbip:port/databasename
说明:驱动程序包名有可能会变
JDBC URL中黑色字体部分必须原封不动的保留,为该驱动识别的URL格式。红色字体部需要根据数据库的安装情况填写。其中各个部分含义如下:
dbip –为数据库服务器的IP地址,如果是本地可写:localhost或127.0.0.1。
port –为数据库的监听端口,需要看安装时的配置,缺省为3306。
databasename –数据库的名字。
Access数据库
驱动程序包名:该驱动程序包含在JavaSE中,不需要额外安装。
驱动类的名字:sun.jdbc.odbc.JdbcOdbcDriver
JDBC URL:jdbc:odbc:datasourcename
说明:该驱动只能工作在Windows系统中,首先需要在操作系统中建立一个可以访问Access数据库的本地数据源(ODBC),如果名字为allandb,那么URL写法如下:
jdbc:odbc:allandb
PreparedStatement接口:
预编译的sql语句对象
作用: 解决了书写sql语句时一些特殊的字符与sql保留字符冲突的问题,非常方便
/**
*知识点:
*PreparedStatement接口及方法的使用
*程序目标:
*java文件:
*PreparedInsert.java:连接数据库,插入一条数据
*JdbcUtil.java:实现一个工具类,功能:1.连接数据库 2.关闭资源
*/

package com.jdbc.c_preparedstatement;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import com.jdbc.Util.JDBCUtil;

public class Login {
    //SELECT * FROM USER WHERE userName='james' OR 1=1 -- ' AND PASSWORD='123456';
    //sql注入行为
    private static String user = " 'james' OR 1=1 -- ";
    private static String password = "123456";
    public static void main(String[] args) {
        //testStatement();
        testPreparedStatement();
    }
    private static void testPreparedStatement() {
        Connection conn  =null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try{
            conn  =JDBCUtil.getConn();
            String sql = "SELECT * FROM USER WHERE userName=? AND PASSWORD=?;";
            stmt = conn.prepareStatement(sql);
            //给问号设置参数
            stmt.setString(1, user);
            stmt.setString(2, password);
            //发送参数并执行sql
            rs = stmt.executeQuery();
            if (rs.next()) {
                System.out.println("登陆成功");
            }else {
                System.out.println("登录失败");
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JDBCUtil.close(conn, stmt, rs);
        }
    }
    private static void testStatement() {
        Connection conn  =null;
        Statement stmt = null;
        ResultSet rs = null;
        try{
            conn = JDBCUtil.getConn();
            stmt = conn.createStatement();
            String sql  ="SELECT * FROM USER WHERE userName='"+user+"' AND PASSWORD='"+password+"';";
            rs = stmt.executeQuery(sql);
            if (rs.next()) {
                System.out.println("登陆成功");
            }else {
                System.out.println("登录失败");
            }   
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtil.close(conn, stmt, rs);
        }
    }
}

数据库的增删改查的例子:
/**
*知识点:
*JDBC+SQL+ORACLE
*程序目标:
*UserDao.java:实现了数据库的增删改查
*JdbcUtil.java:工具类,有连库和关闭资源的方法
*/

package com.jdbc.c_preparedstatement;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.jdbc.Util.JDBCUtil;
public class Demo {
    public static void main(String[] args) {
        //testInsert();
        //testUpdate();
        //testDelete();
        testSelect();
    }
    private static void testSelect() {
        Connection conn  =null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try{
            //获取连接
            conn  = JDBCUtil.getConn();
            //定义预编译sql
            String sql = "SELECT * FROM student WHERE id=?;";
            //获取预编译sql对象
            stmt = conn.prepareStatement(sql);
            //给问好赋值
            stmt.setInt(1, 3);
            //发送参数并执行sql语句
            //ResultSet executeQuery()throws SQLException在此 
            //PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
            rs = stmt.executeQuery();
            //遍历结果集
            while (rs.next()) {
                System.out.println(rs.getInt("id")+"--"+rs.getString("name")+"--"+rs.getInt("age"));
            }   
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtil.close(conn, stmt, rs);
        }
    }
    private static void testDelete() {
        Connection conn  =null;
        PreparedStatement stmt = null;
        try{
            conn = JDBCUtil.getConn();
            //写一个参数化的sql
            String sql = "DELETE FROM student WHERE id=?;";
            //获取预编译的sql对象
            stmt = conn.prepareStatement(sql);
            //给?设置参数
            stmt.setInt(1, 2);
            //发送参数并执行sql
            int count = stmt.executeUpdate();
            System.out.println(count);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtil.close(conn, stmt, null);
        }
    }
    private static void testUpdate() {
        Connection conn  =null;
        PreparedStatement stmt = null;
        try{
            conn = JDBCUtil.getConn();
            String sql = "UPDATE student SET NAME=? WHERE id=?;";
            //执行预编译sql
            stmt = conn.prepareStatement(sql);
            //给?赋值
            stmt.setString(1, "张学友");
            stmt.setInt(2, 5);
            //发送参数到数据库服务器,并执行sql,将执行结果返回
            int count = stmt.executeUpdate();
            System.out.println(count);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtil.close(conn, stmt, null);
        }   
    }

    private static void testInsert() {
        //定义连接对象和预编译sql对象
        Connection conn  = null;
        PreparedStatement stmt = null;
        try{
            //获取连接
            conn = JDBCUtil.getConn();
            //PreparedStatement prepareStatement(String sql)
            //throws SQLException创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
            String sql = "INSERT INTO student VALUES(?,?,?);";//参数化的sql,动态sql
            stmt = conn.prepareStatement(sql);//需要一个预编译的sequel语句,将sq发送到数据库端,检查sql语法及用户权限等信息

            //给之前参数化的sql语句设置参数
            //两个参数:1:是给第几个?设置数据    2:给?设置的数据
            stmt.setInt(1, 5);
            stmt.setString(2, "黎明");
            stmt.setInt(3, 60);
            //int executeUpdate()throws SQLException
            int count = stmt.executeUpdate();
            System.out.println(count);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //释放资源
            JDBCUtil.close(conn, stmt, null);
        }
    }
}
  • 补充
    JDBC连接MySQL
    加载及注册JDBC驱动程序
    Class.forName(“com.mysql.jdbc.Driver”);
    Class.forName(“com.mysql.jdbc.Driver”).newInstance();
    JDBC URL 定义驱动程序与数据源之间的连接

常见参数:
user 用户名
password 密码
autoReconnect 联机失败,是否重新联机(true/false)
maxReconnect 尝试重新联机次数
initialTimeout 尝试重新联机间隔
maxRows 传回最大行数
useUnicode 是否使用Unicode字体编码(true/false)
characterEncoding 何种编码(GB2312/UTF-8/…)
relaxAutocommit 是否自动提交(true/false)
capitalizeTypeNames 数据定义的名称以大写表示
建立连接对象
String url=”jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password”;
Connection con = DriverManager.getConnection(url);
建立SQL陈述式对象(Statement Object)
Statement stmt = con.createStatement();
执行SQL语句
executeQuery()
String query = “select * from test”;
ResultSet rs=stmt.executeQuery(query);
结果集ResultSet
while(rs.next())
{rs.getString(1);rs.getInt(2);}
executeUpdate()
String upd=”insert into test (id,name) values(1001,xuzhaori)”;
int con=stmt.executeUpdate(upd);
execute()
示例:

try{ } catch(SQLException sqle) { } finally { }

ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet接口的常用方法如下表所示!
这里写图片描述

直接使用ResultSet对象执行更新数据
新增数据
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.moveToInsertRow();
uprs.updateInt(1,1001);
uprs.updateString(2,”许召日”);
uprs.insertRow;
更新数据
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.last();
uprs.updateString(“name”,”xuzhaori”);
uprs.updateRow;
删除数据
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_PUDATABLE);
ResultSet uprs=stmt.executeQuery(“select * from test”);
uprs.absolute(4);
uprs.deleteRow();

批处理
con.setAutoCommit(false); 关闭自动认可模式
Statement stmt=con.createStatement();
int[] rows;
stmt.addBatch(“insert into test values(1001,xuzhaori)”);
stmt.addBatch(“insert into test values(1002,xuyalin)”);
rows=stmt.executeBatch();
con.commit(); 没有任何错误,执行批处理stmt.executeBatch();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值