宁波网站建设怎么建设,响应式网站的设计趋势,免费做网站平台,在网站上有中英切换怎么做1.JDBC简介
*JDBC(Java DataBase Connectivity)就是使用java语言操作关系型数据库的一套API *JDBC本质#xff1a;#xff08;可以使用同一套代码#xff0c;操作不同的关系型数据库#xff09;
*官方定义的一套操作所有关系型数据库的规则#xff0c;即接口
*各…1.JDBC简介
*JDBC(Java DataBase Connectivity)就是使用java语言操作关系型数据库的一套API *JDBC本质可以使用同一套代码操作不同的关系型数据库
*官方定义的一套操作所有关系型数据库的规则即接口
*各个数据厂商去实现这套接口提供数据库驱动jar包
*我们可以使用这套接口编程真正执行的代码是驱动jar包中的实现类
1.用java写jdbc(快速入门)
public class JDBCDemo {public static void main(String[] args) throws Exception {//1.注册驱动Class.forName(com.mysql.jdbc.Driver);//2.获取连接String url jdbc:mysql://127.0.0.1:3306/db1;String username root;String password 1234;Connection conn DriverManager.getConnection(url,username,password);//3.定义sqlString sql update account set money 2000 where id 1;//4.获取执行sql的对象 StatementStatement stmt conn.createStatement();//5.执行sqlint count stmt.executeUpdate(sql);//返回受影响的行数//6.处理结果System.out.println(count);//7.释放资源stmt.close();conn.close();}
}2.JDBC API详解
1.DriverManager
*驱动管理类
*作用1.注册驱动 2.获取数据库连接 2.Connection
1.获取执行SQL的对象
*普通执行SQL对象
Statement createStatement() *预编译SQL的执行SQL对象防止SQL注入
PreparedStatement prepareStatement(sql) *执行存储过程的对象
CallableStatement prepareCall(sql)2.事务管理
*MySQL 事务管理
开启事务BEGIN;/ START TRANSACTION;
提交事务COMMIT;
回滚事务ROLLBACK;MySQL默认自动提交事务 *JDBC事务管理Connection接口中定义了3个对应的方法
开启事务setAutoCommit(boolent autoCommit):true为自动提交事务;false为手动提交事务即为开启事务
提交事务commit()
回滚事务rollback()3.Statement
*作用执行SQL语句
*执行SQL语句
int executeUpdate(sql):执行DML、DDL语句
*返回值(1)DML语句影响的行数 (2)DDL语句执行后执行成功也可能返回0ResultSet: executeQuery(sql):执行DQL语句
*返回值ResultSet结果集对象//1.注册驱动(可不写)
//Class.forName(com.mysql.jdbc.Driver);//2.获取连接:如果连接的是本机Mysql并且端口是默认的3306可以简化书写
String url jdbc:mysql:///db1?useSSLfalse;
String username root;
String password 1234;
Connection conn DriverManager.getConnection(url,username,password);//3.定义sql
String sql update account set money 3000 where id 1;//DML语句
create database db2;//DDL语句//4.获取执行sql的对象 Statement
Statement stmt conn.createStatement();//5.执行sql
int count stmt.executeUpdate(sql);//执行完DML语句,受影响的行数//6.处理结果
System.out.println(count);//7.释放资源
stmt.close();
conn.close();4.ResultSet
*(结果集对象)作用 1.封装了DQL查询语句的结果
ResultSet stmt.executeQuery(sql):执行DQL语句返回ResultSet对象 *获取查询结果
boolean next():(1)将光标从当前位置向前移动一行 (2)判断当前行是否为有效行
*返回值*true:有效行当前行有数据*false:无效行当前行没有数据xxx getXxx(参数):获取数据
* xxx:数据类型如int getInt(参数);String getString(参数)
*参数*int:列的编号从1喀什*String:列的名称//1.获取连接
String url jdbc:mysql:///db1?useSSLfalse;
String username root;
String password 1234;
Connection conn DriverManager.getConnection(url, username, password);//2.定义sql
String sql select * from account;//3.获取statement对象
Statement stmt conn.createStatement();//4.执行sql
ResultSet rs stmt.executeQuery(sql);//创建集合
ListAccount list new ArrayList();//5.处理结果遍历rs中的所有数据
//5.1光标向下移动一行并且判断当前行是否有数据
while(rs.next){Account account new Account();//5.2获取数据 getXxx(第几列)int id rs.getInt(1);String name rs.getString(2);double money rs.getDouble(3);//赋值account.setId(id);account.setName(name);account.setMoney(money);//存入集合list.add(account);System.out.println(id);System.out.println(name);System.out.println(money);System.out.println(-----)
}//6.释放资源rs.close(); stmt.close();conn.close();
5.PreparedStatement
*预编译SQL语句并执行预防SQL注入问题(将铭感字符进行转移)
*SQL注入通过操作输入来修改实现定义好的SQL语句用以达到执行代码对服务器进行攻击的方法
public void testResultSet() throws Exception {//2.获取连接如果连接的是本机mysql并且端口是默认的3306可以简化书写String url jbdc:mysql:///db1?useSSLfalse;String username root;String password 1234;Connection conn DriverManager.getConnection(url,username,password);//接收用户输入 用户名和密码String name zhangsan;String pwd 123;String sql select * from tb_user where username name and password pwd;//获取stmt对象Statement stmt conn.createStatement();//执行sqlResultSet rs stmt.executeQuery(sql);//判断登录是否成功if(rs.next()){System.out.println(登陆成功);}else{System.out.println(登录失败);}//7.释放资源/*rs.close();stmt.close();conn.close();*/
}1.获取PreparedStatement对象
//SQL语句中的参数值使用?占位符替代
String sql select * from user where username ? and password ?;//通过Connection对象获取并传入对应的sql语句
PreparedStatement pstmt conn.prepareStatement(sql);2.设置参数值
PreparedStatement对象setXxx(参数1参数2):给?赋值
*Xxx:数据类型如setInt(参数1参数2)
*参数:-参数1的位置编号从1开始-参数2的值eg:
pstmt:setString(1,name);
pstmt.setString(2,pwd);
//替代问号占位符位置的值3.执行SQL
executeUpdate();/executeQuery():不需要再传递sql3.数据库连接池
1.简介
*数据库连接池是个容器负责分配、管理数据库连接(Connection)
*它允许应用程序重复使用一个现有的数据库连接而不是再重新建立一个
*释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
*好处
--资源重用
--提升系统响应速度
--避免数据库连接遗漏
2.数据库连接池实现
*标准接口DataSource
*官方提供的数据库连接池标准接口由第三方组织实现此接口
*功能获取连接
Connection getConnection() *常见的数据库连接池
*DBCP
*C3P0
*Druid
*Druid(德鲁伊)
*Druid连接池是阿里巴巴开源的数据库连接池项目好用
//1.带入jar包//2.定义配置文件//3.加载配置文件
Properties prop new Properties();
prop.load(new FileInputStream(src/druid.properties));//4.获取连接池对象
DataSource dataSource DruidDataSourceFactory.createDataSource(prop);//5.获取数据库连接 Connection
Connection connection dataSource.getConnection();System.out.println(connection);