拖拽网站开发,石家庄那有建网站,网页qq登录保护在哪里,做建筑的网站1、JDBC是什么#xff1a;
是SUN公司制定的一套接口(interface)。接口都有调用者和实现者。面向接口调用、面向接口写实现类#xff0c;这都属于面向接口编程。
2、在使用JDBC的六个步骤#xff1a;
1.注册驱动#xff08;告诉Java程序#xff0c;即将连接的是哪个品牌…1、JDBC是什么
是SUN公司制定的一套接口(interface)。接口都有调用者和实现者。面向接口调用、面向接口写实现类这都属于面向接口编程。
2、在使用JDBC的六个步骤
1.注册驱动告诉Java程序即将连接的是哪个品牌的数据库2.获取连接表示JVM的进程和数据库进程之间的通道打开了这属于进程之间的通信使用完后记得关闭通道。3.获取数据库操作对象专门执行sql语句的对象4.执行SQL语句DQL,DML…5.处理查询结果集 只有当第四步执行的是select语句的时候才有本步6.释放资源使用完资源后一定要关闭资源Java和数据库之间属于进程间的通信开启之后一定要记得关闭
3、JDBC的模糊查询
import com.shujia.wyh.utils.MySqlTool;import java.sql.PreparedStatement;
import java.sql.ResultSet;/*模糊查询*/
public class JDBCDemo7 {public static void main(String[] args) throws Exception {String sql select ename from emp where ename like ?;PreparedStatement statement MySqlTool.getStatement(sql);statement.setString(1, %A%);ResultSet resultSet statement.executeQuery();while (resultSet.next()){String name resultSet.getString(1);System.out.println(name);}}
}
在使用maven连接mysql的时候需要在poml文件中添加依赖
!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version
/dependency4、JDBC连接MySQL
/*1.注册驱动告诉Java程序即将连接的是哪个品牌的数据库2.获取连接表示JVM的进程和数据库进程之间的通道打开了这属于进程之间的通信使用完后记得关闭通道。3.获取数据库操作对象专门执行sql语句的对象4.执行SQL语句DQL,DML…5.处理查询结果集 只有当第四步执行的是select语句的时候才有本步6.释放资源使用完资源后一定要关闭资源Java和数据库之间属于进程间的通信开启之后一定要记得关闭*/import com.mysql.jdbc.Driver;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class JDBCDemo1 {public static void main(String[] args) throws Exception{//第一种连接方式// 1.注册驱动告诉Java程序即将连接的是哪个品牌的数据库// jdk帮助文档中提供了一个类让我们去注册驱动 DriverManager//但是通过观察后发现DriverManager类中并没有构造方法就意味着无法创建对象//但是没关系我们又观察发现该类中的方法都是静态的就意味着可以通过DriverManager类直接调用//静态方法注册驱动static void registerDriver(Driver driver) 注册与给定的驱动程序 DriverManager 。//通过观察后又发现registerDriver方法中需要传入一个实现了java.sql.Driver接口的实现类//而恰好我们引入的mysql驱动包中就有一个类实现了java.sql.Driver接口//mysql驱动包中正好有一个类Driver实现了java.sql.Driver的接口DriverManager.registerDriver(new Driver());//2.获取连接表示JVM的进程和数据库进程之间的通道打开了这属于进程之间的通信使用完后记得关闭通道。//static Connection getConnection(String url, String user, String password)//尝试建立与给定数据库URL的连接。/*** url: 统一资源定位符* http/https: 都是从网络中请求资源* jdbc:mysql: 是java连接mysql数据库的url前缀* 请求连接mysql数据库的ip地址192.168.254.100* 端口号3306 告诉连接驱动我们连接的是mysql服务* 告诉你要操作的数据库名bigdata25* useUnicodeTruecharacterEncodingutf8** user: 登录mysql数据库的用户名 root** password: 登录mysql数据库的密码 123456*///mysql5.7之后不建议用户直接与mysql服务连接中间会有一个SSL令牌校验String url jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicodeTruecharacterEncodingutf8useSSLfalse;String user root;String password 123456;Connection conn DriverManager.getConnection(url, user, password);System.out.println(数据库连接成功conn);//3.获取数据库操作对象专门执行sql语句的对象Statement statement conn.createStatement();//4.执行SQL语句DQL,DML…/*** 在JDBC中 它将查询单独封装了一个方法而其他的增删改单独一个方法** 用于查询的方法* ResultSet executeQuery(String sql) 执行给定的SQL语句该语句返回单个 ResultSet对象。** 用户增删改的方法* int executeUpdate(String sql) 执行给定的SQL语句这可能是 INSERT UPDATE 或 DELETE语句* 或者不返回任何内容如SQL DDL语句的SQL语句。*///增加
// String sql insert into student values(110,洪文霁,男,18,95033);
// int i statement.executeUpdate(sql);
// if(i1){
// System.out.println(数据添加成功。。。);
// }else {
// System.out.println(数据添加失败);
// }//删除
// String sql2 delete from student where sno110;
// int i1 statement.executeUpdate(sql2);
// if(i11){
// System.out.println(数据删除成功。。。);
// }else {
// System.out.println(数据删除失败);
// }//修改String sql3 update student set sage19 where sno110;int i statement.executeUpdate(sql3);if(i1){System.out.println(数据修改成功。。。);}else {System.out.println(数据修改失败);}//6.释放资源使用完资源后一定要关闭资源Java和数据库之间属于进程间的通信开启之后一定要记得关闭conn.close();}
}第二种连接的方式
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;/*回顾一下使用java操作数据库的6步1、注册驱动 我们上午学习的注册驱动是第一种方式借助于DriverManager类2、建立连接3、获取操作数据库的对象4、执行sql5、如果第四步是查询操作分析查询的结果集6、释放资源关闭连接*/
public class JDBCDemo2 {public static void main(String[] args) throws Exception {/*** 上午呢我们说到驱动包的时候原本是java自己提供的一系列接口然后不同的数据库厂商去实现这些接口* 最终提供了一个驱动包给到开发者然后开发者拿到这个驱动包使用里面的类连接或操作数据库** 上午的注册驱动方式是直接实例化mysql驱动包中的Driver类但是我们今后使用java不一定只是连接mysql还有可能操作redis等其他的数据库* 实际上我们最终是根据驱动包中的实现类路径来找到这个实现类的* 能否使用传路径的方式注册驱动呢** 第二种注册驱动的方式驱动包中的类都是class文件我们如果能够直接定位到实现类也可以* 使用反射的方式定位到实现类将实现类加载到内存* Class.forName(com.mysql.jdbc.Driver)*/Class.forName(com.mysql.jdbc.Driver);//2.获取连接表示JVM的进程和数据库进程之间的通道打开了这属于进程之间的通信使用完后记得关闭通道。//mysql5.7之后不建议用户直接与mysql服务连接中间会有一个SSL令牌校验String url jdbc:mysql://192.168.254.100:3306/bigdata25?useUnicodeTruecharacterEncodingutf8useSSLfalse;String user root;String password 123456;Connection conn DriverManager.getConnection(url, user, password);System.out.println(数据库连接成功conn);//3.获取数据库操作对象专门执行sql语句的对象Statement statement conn.createStatement();//4.执行SQL语句DQL,DML…//修改String sql3 update student set sage20 where sno110;int i statement.executeUpdate(sql3);if(i1){System.out.println(数据修改成功。。。);}else {System.out.println(数据修改失败);}//6.释放资源使用完资源后一定要关闭资源Java和数据库之间属于进程间的通信开启之后一定要记得关闭conn.close();}
}import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class JDBCDemo08 {public static void main(String[] args) throws Exception{//建立连接需要指定用户的url地址和用户名和密码Connection conn DriverManager.getConnection(jdbc:mysql://master/trip,root,123456);//获取mysql的操作对象Statement statement conn.createStatement();String sql select * from activity ;//执行sql语句ResultSet resultSet statement.executeQuery(sql);//获取里面的数据并打印在控制台中,下表是从1开始的。while(resultSet.next()){int id resultSet.getInt(1);String cid resultSet.getString(2);String name resultSet.getString(3);System.out.println(id \t cid name);}
conn.close();}
}
5、悲观锁和乐观锁的概念
事务1–读取到版本号1.1
事务2—读取到版本号1.1
其中事务1先修改了,修改之后看了版本号是1.1 ,于是提交修改的数据,将版本号修改为1.2 其中事务2后修改的,修改之后准备提交的时候,发现版本号是1.2 ,和它最初读的版本号不一致。回滚。
悲观锁:事务必须排队执行。数据锁住了,不允许并发。 (行级锁: select后面添加for update )
乐观锁:支持并发,事务也不需要排队,只不过需要一个版本号。