JSP学习入门4

132 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

JDBC原理及使用Statement访问数据库

1.JDBC: Java DataBase Connectivity 可以为多种关系型数据库DBMS提供统一的访问方式,用Java来操作数据库

1.JDBC API:提供各种操作访问接口 Connection Statement PreparedStatement ResultSet

2.JDBC DriverManager:管理不同的数据库驱动

3.各种数据库驱动:相应的数据库厂商提供的(第三方公司提供),连接/直接操作数据库

2.JDBC API主要功能:

三件事,具体是通过以下类/接口实现:

DriverManager:管理JDBC驱动

Connection:连接(通过DriverManager产生)

Statement(PrepareStatement):增删改查(通过Connection产生)

CallableStatement:调用数据库中的 存储过程/存储函数(通过Connection产生)

Result:返回的结果集(上面的Statement等产生)

Connection产生操作数据库的对象:

Connection 产生Statement对象:createStatement();

Connection 产生PrepareStatement对象:createprepareStatement();

Connection 产生CallableStatement对象:prepareCall();

Statement操作数据库:

增删改:executeUpdate();

查询:executeQuery();

ResultSet:

保存结果集:select * from xxx;

next():

光标下移

判断是否有下一条数据;true/false

previous():

光标上移

判断是否有下一条数据;true/false

getXXX(字段名|位置):

获取具体有字段值

PreparedStatement操作数据库:

public interface PreparedStatement extends Statement

因此

增删改:executeUpdate();

查询:executeQuery();

此外

赋值操作:setXXX();

3.JDBC访问数据库的具体步骤:

a.导入驱动 ,加载具体的驱动类

b.与数据库建立连接

c.发送sql,执行

d.处理结果集(查询)

4.数据库驱动

驱动jar具体驱动类连接字符串
Oracleojdbc-x.jaroracle.jdbc.OracleDriverjdbc.oracle:thin:@localhost:1521:ORCL
MySQLmysql-connector-java-x.jarcom.mysql.jdbc.Driverjdbc:mysql://localhost:3306/数据库实例名
SqlServersqljdbc-x.jarcom.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名

5.MySQL示例

ResultSet类似一张表

<——rs

1 zs

2 ls

3 ww

next():

1.下移

2.判断下移之后的元素是否有数据

如果有数据:true

为空:false

getXXX()

rs.getXXX();

获取rs指向行的数据

example:

getInt();

getString();

getDate();

Statement增删改、查示例

 import java.sql.Connection;
 import java.sql.Date;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 ​
 public class JDBCDemo {
     private static final String URL="jdbc:mysql://localhost:3306/stulist";
     
     public static void update(){//增删改
         Statement stmt=null;
         Connection conn=null;
         
         try {
             //a.导入驱动,加载具体的驱动类
             Class.forName("com.mysql.jdbc.Driver");//加载具体的驱动类
             //b.与数据库建立连接
             conn = (Connection) DriverManager.getConnection(URL,"root","qq20010404");
             //c.发送sql,执行(增删改、查)
             stmt = conn.createStatement();
             String sql="insert into stuinfo values('John','2001-04-04',2019102120)";
             //执行
             int count=stmt.executeUpdate(sql);//返回值表示 增删改 几条数据
             //d.处理结果
             if (count>0) {
                 System.out.println("操作成功!");
                 
             }
         }catch (ClassNotFoundException e) {
             e.printStackTrace();
         }catch (SQLException e) {
             e.printStackTrace();
         }catch (Exception e) {
             e.printStackTrace();
         }
         finally {
             try {
                 if(stmt!=null) {
                     stmt.close();//对象.方法
                 }
                 
                 if(conn!=null) {
                     conn.close();
                 }
             } catch (SQLException e) {
                 e.printStackTrace();
             }
         }
     }
     
     public static void query() {
         Statement stmt=null;
         Connection conn=null;
         ResultSet rs=null;
         try {
             //a.导入驱动,加载具体的驱动类
             Class.forName("com.mysql.jdbc.Driver");//加载具体的驱动类
             //b.与数据库建立连接
             conn = (Connection) DriverManager.getConnection(URL,"root","qq20010404");
             //c.发送sql,执行(查)
             stmt = conn.createStatement();
             String sql="select * from stuinfo";
             //执行
             rs=stmt.executeQuery(sql);//返回值表示 增删改 几条数据
             //d.处理结果
             while(rs.next()) {
                 String stuName=rs.getString("name");
                 Date btd=rs.getDate("birthday");
                 int stuNum=rs.getInt("num");
                 //下标:从1开始计数,不推荐
 //              String stuName=rs.getString(1);
 //              Date btd=rs.getDate(2);
 //              int stuNum=rs.getInt(3);
                 System.out.println(stuName+"  "+btd+"  "+ stuNum);
                 System.out.println("----------------------------------------");
             }
             
         }catch (ClassNotFoundException e) {
             e.printStackTrace();
         }catch (SQLException e) {
             e.printStackTrace();
         }catch (Exception e) {
             e.printStackTrace();
         }
         finally {
             try {
                 if(rs!=null) {
                     rs.close();
                 }
                 if(stmt!=null) {
                     stmt.close();//对象.方法
                 }
                 
                 if(conn!=null) {
                     conn.close();
                 }
             } catch (SQLException e) {
                 e.printStackTrace();
             }
         }
     }
     
     public static void main(String[] args) throws ClassNotFoundException, SQLException {
         query();
     }
     
 }
 ​