JDBC.

1.JDBC基础格式介绍

//JDBC快速入门
public class jdbcDemo {
    public static void main(String[] args) throws Exception {
// 1.导入驱动jar包(连接什么数据库导入什么jar包)
//2.注册驱动
     Class.forName("com.mysql.jdbc.Driver");//jar包中的目录
//3.搭建数据库连接
     Connection  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","root");
                                //jar包中的mysql mysql中的数据库Localhost(ip地址) 3306(端口号) db1(数据库名称)  账户      密码
// 定义sql 语句
         String sql ="updata db1 account set two = 500 where one = 1";
// 获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
//执行sql
        int i = stmt.executeUpdate(sql);
//处理结果
        System.out.println(i);
//释放资源
        stmt.close();
        conn.close();

    }
}

2.JDBC对象了解

        2.1 DriverManager:驱动对象

                功能:注册驱动 告诉程序使用哪一个数据库驱动jar

                语法使用: Class.forname("com.mysql.jdbc.Driver")mysql jar包5.1.37

                static void registerDriver(Driver driver):注册给定的驱动程序 DriverManager

2.3:搭建数据库连接:

            getConnerction:得到连接的方法     

 static(静态) (返回值为)Connection  方法 getConnerction(String url, String user, String password):

        Connection =  DriverManager 对象调用.getConnerction获取三个参数  

尝试建立与给定数据库URL的连接               

                            参数: url:指定连接的路径

                             urser:用户名

                             password:密码

       2.4:url

              连接路径

                        语法:jdbc:mysq://ip地址(域名也可以):3306/数据库名称, "账户" , "密码"

                注意: 当连接的是mysql本机的服务器,并且mysq默认端口端口号为3306,则url可以简写

                         格式:jdbc:mysq:///数据库名称

2.5: Connection:数据库连接对象

Connetion总结:createStatement对象,适用于数据库只执行一次性存取需求,可能造成SQL注入,不安全

          功能 

                 获取执行sql的数据库连接对象

                       (返回值为)Statement(方法)    (通过搭建数据库连接来调用)createStatement()

                      (返回值)preparedstatement(方法)          preparestatement(String sql)   

                                             创建一个preparestatement对象,用于将参数化的sql语言发送到数据库

              管理事务

                          开启事务 setAutoCommit(boolean autoCommit)

                                                方法设置参数为false,即开始事务

                         提交事务:commit()

                         回滚事务:rollback()   

2.6 Statement:执行sql的对象

           执行sql

                        (类型)int  excuteupdate(String sql):执行为DMl语句(或者DDL语句)

                             注意:当执行DDL语句时,是没有返回结果的

        通过返回值来判断DML的语句执行成功或失败 返回结果的行数大于0成功,小于零失败,而返回值所影响的为行数

                        (类型)boolean excute(String sql):可以执行任意的sql语句

                返回值: boolean类型

                        Resultset  excuteQuery(String sql):执行DQL(select语句)

                返回的是一个结果集对象

                        

2.7:ResultSet:结果集对象,封装查询对象

ResultSet方法       

                    boolean(类型)    next():将光标从当前位置向前移动一行,判断光标是否在最后一行,如果是,返回false,不是返回true

                  getint(参数):获取数据   

           (根据所需来设置一定的数据类型)  

                      参数: int 代表列的编号,从1开始,代表第1列

                                        案例:getint(1);

                                String:表示列的编号  

                                      案例:getvarchar("宝贝");

  步骤:

                游标向下移动一行

                判断是否有数据

                获取数据

while (i.next()){
    String de = i.getString("dname");
    int anInt = i.getInt(1);
    String loc = i.getString("loc");
    System.out.println(anInt+"--"+de+"--"+loc);
}

                      

2.8:创建配置文件,创建JDBC工具类,实现操作简化                           

package cn.it.JDBCuitls;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

//JDBC工具类

public class uitls {
    //定义静态的成员变量 为静态代码块
private  static String  url;
private  static  String user;
private static  String password;
private static  String driver;

//静态代码块
    static {
   //读取文件 获取值
    try {
        Properties pro = new Properties();//定义一个Properties集合
        //获取src路径下文件的方式  ClassLoader类加载器
        ClassLoader classLoader = uitls.class.getClassLoader();
        //getResoure:传输一个文件名
        //URL:表示统一的定位符,定位文件的绝对路径
        URL resource = classLoader.getResource("jdbc.properties");
        //getPath():获取字符串路径
        String path = resource.getPath();
        System.out.println(path);

        //加载配置文件
        pro.load(new FileReader(path));

       url = pro.getProperty("url");//获取数据,赋值
        user = pro.getProperty("user");
         password = pro.getProperty("password");
        driver = pro.getProperty("driver");
        //注册驱动
        try {
            //调用赋值的值
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}



    //定义连接对象的方法
    //Connection:数据库连接对象
    /**
     *
     * @return 连接对象
     */
      public static Connection getConnection() throws SQLException {//静态方法
             return DriverManager.getConnection(url,user,password);
      }
    /**
     *释放资源的
     * @param con
     * @param st
     */
    //定义了sql中资源释放的步骤,并重载了另一个sql的对象
    public static void close(Connection con, Statement st){    //()中表示的是参数类型
        if (con!=null){
            try {
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }if (st!=null){
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 重载
     * @param rs
     * @param conn
     * @param stt
     */
    public  static void close(ResultSet rs,Connection conn,Statement stt){
            if (rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }//为了不让内存不断变小,区分开来条件判断
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            if (stt!=null){
                try {
                    stt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

    配置文件格式

url=jdbc:mysql:///db1
user=root
password=root
driver=com.mysql.jdbc.Driver

8.preparedstatement:执行sql的对象

注意:以后会经常的使用preparedstatement

         解决sql注入问题,使用preparedstatement对象来解决

        预编译的sql,参数使用?作为占位符

        步骤

                1.导入jar包

                2.注册驱动

                3.获取数据库连接对象

                4.定义sql

                sql的参数作为?来赋值

                 select * from student where id = ? and name =?

                5. 使用preparedstatement对象来传入参数preparestatement(String sql)   

                6.给mysql语句中的未赋值的,赋值

                 getint(参数1,参数2): 根据未赋值的字段列表来定义数据类型

        案例:

                pstmt.setString(1,name);
                pstmt.setString(2,password);

                        参数1:?的位置编号 1开始

                        参数2:?的值

7.执行sql,接受返回结果,根据调用preparedstatement方法,执行sql对象(excuteQuery)不需要在传递sql语句

                        8.处理结果

                        9.释放资源

9.JDBC控制事务

        使用Connection对象来管理事务

   开启事务 setAutoCommit(boolean autoCommit)       方法设置参数为false,即开始事务

        在执行sql之前开启事务

                         提交事务:commit()

当所有sql都执行完提交事务

                         回滚事务:rollback()

在所定义中回滚事务 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值