admin管理员组

文章数量:1122966

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的对象 StatementStatement stmt = conn.createStatement();
//执行sqlint 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()

在所定义中回滚事务 

本文标签: JDBC