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.
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()
在所定义中回滚事务