jdbc连接小知识

1.jdbc是什么
JDBC(Java Data Base Connectivity,java数据库连接)
① 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问
② 由一组用Java语言编写的类和接口组成
③ 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
④ JDBC也是个商标名

简单地说,JDBC 可做三件事
① 与数据库建立连接
② 发送操作数据库的语句
③ 处理结果

2.Jdbc整体架构
jdbc整体框架
Jdbc也就是一个为应用程序提供了一个统一的访问接口,各个数据库公司可以根据自己的数据库来实现相应的接口,从而实现了对于数据库的访问操作。

3.具体的实现操作
第一步:加载驱动
第二步:获得连接,连接数据库
第三步:使用语句操作数据库
第四步:关闭数据库释放连接

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class test2 {    
    static String className="com.mysql.jdbc.Driver";// 驱动名称
        static Connection conn = null;
        static String url="jdbc:mysql://localhost:3306/bbs";//数据库地址
        static String user="root";// 用户名
        static String password="root";// 密码

    public static void main(String[] args) {        
        try {
            //第一步:加载驱动
            Class.forName(className);
            System.out.println("数据库加载成功"); 
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("数据库加载失败"); 
        }

        try {
//          第二步:获得连接,连接数据库
            conn=DriverManager.getConnection(url, user, password);

            System.out.println("数据库连接获取成功"); 
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("数据库连接获取失败"); 
        }

//          第三步:使用语句操作数据库

        try {
//          第四步:关闭数据库释放连接
            conn.close();
            System.out.println("数据库关闭成功"); 
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("数据库关闭失败"); 
        }
    }

}

4.使用Statement操作数据库

public class demo2 {
    public static void main(String[] args) throws Exception { 
        Connection conn=DBUtil.getConn();//获得连接

        Statement stmt=conn.createStatement();//使用语句操作数据库

        String sql="insert into booktable values(null,'android222',20,'helen',1)";
        stmt.executeUpdate(sql);//增加语句——执行更新操作

        String sql2="delete from booktable where bookid=2";
        stmt.executeUpdate(sql2);//删除语句——执行更新操作

        String sql3="update booktable set bookName='html12222' where bookId=3";
        stmt.executeUpdate(sql3);//修改语句——执行更新操作

        String sql4="select * from booktable";
        ResultSet rs=stmt.executeQuery(sql4);//查询语句——执行查询操作
        while(rs.next()){
//          System.out.println(rs.getString(1)+rs.getString(2)+rs.getString(3)+rs.getString(4)+rs.getString(5));
            System.out.println(rs.getInt("bookId")+rs.getString("bookName")+rs.getString("price")+rs.getString("author")+rs.getString("bookType"));
        }
        DBUtil.close(stmt,conn);    

    }

}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {
    static String className="com.mysql.jdbc.Driver";
    static Connection conn=null;
    static String url="jdbc:mysql://localhost:3306/bookmanage";
    static String user="root";
    static String password="root";

    /**
     * 获得连接
     * @return
     * @throws Exception
     */
    public static Connection  getConn() throws Exception{
        Class.forName(className);
        conn=DriverManager.getConnection(url, user, password);
                return conn;

    }

    /**
     * 关闭连接
     * @throws Exception 
     * @throws Exception 
     */ 
    public static void close(Statement stmt, Connection conn) throws Exception {
        // TODO Auto-generated method stub
        if(stmt!=null){
            stmt.close();
            if(conn!=null){
                conn.close();
            }
        }

    }
}

增删改:stmt.executeUpdate(sql);
查询:ResultSet rs=stmt.executeQuery(sql); 然后进行遍历

其实:可以一些利用用户输入的方式来传递参数
可以将传递过来的参数封装成为一组对象(Model),然后进行获取相应的结果。

5.使用prepareStatement操作数据库

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class MyDBUtil {

    static String className="com.mysql.jdbc.Driver";
    static String url="jdbc:mysql://localhost:3306/bookmanage";
    static String user="root";
    static String password="root";

    public static Connection getConn() throws Exception {
        // TODO Auto-generated method stub
        Class.forName(className);
        Connection conn=DriverManager.getConnection(url, user, password);

        return conn;
    }

    public static void cloae(PreparedStatement pstmt, Connection conn) throws Exception {
        // TODO Auto-generated method stub
        if(pstmt!=null){
            pstmt.close();
            if(conn!=null){
                conn.close();
            }
        }
    }
}

import java.sql.Connection;
import java.sql.PreparedStatement;
import com.hlf.test4.Book; 
public class test {
    public static void main(String[] args) throws Exception {
        Book book=new Book("aa", 34, "p", 5);
        addBooktest(book);      
    }
    private static void addBooktest(Book book) throws Exception {    
        Connection conn=MyDBUtil.getConn();
        String sql="insert into booktable values(null,?,?,?,?)";    
        PreparedStatement pstmt=conn.prepareStatement(sql); 
        pstmt.setString(1, book.getBookName());
        pstmt.setFloat(2, book.getPrice());
        pstmt.setString(3, book.getAuthor());
        pstmt.setInt(4, book.getBookTypeId());  
        pstmt.executeUpdate();      
        MyDBUtil.cloae(pstmt,conn);
    }

}

基本上和前面的使用没有什么太大的差别,不同的就是此时是先创建一个pstmt,然后再传递参数的时候去执行前,需要设置每一个参数的值,从1开始设置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值