一JDBC的入门案例:
@Test
public void testJdbc()
{
//1.注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库连接
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jt_tb");
//3.获取传输器
Statement stat=conn.createStatement();
//4.利用传输器执行sql语句
String sql="SELECT * FROM jt_tb";
ResultSet rs=stat.executorQuery(sql);
//5.处理执行结果
while(rs.next()){
Int id=rs.getInt("id");
Double money=rs.getDouble("money");
String name-rs.getString("name");
}
//6.关闭服务
rs.getClose();
stat.getClose();
conn.getClose();
System.out.println("塞翁失马,焉知非福");
}
解释:
一:注册数据库驱动:本质上是由于com.mysql.jdbc.Driver类里面有一个静态代码块,这个静态代码块里面有一行代码是DriverManager.registerDriver(new Driver);这个代码通过这个全路径名加载Driver类,加载到内存,然后由这里面的这个方法注册驱动类,所以并不是class.forName()注册驱动类,实质上是里面的静态代码块中的一行代码注册驱动类:DriverManager.registerDriver(new Driver);这样就可以加载驱动了
注册驱动:加载驱动包,然后放心的让程序管理驱动包,这样使得JDBC就可以管理驱动中的功能了,方便我们使用里面的方法和功能
全路径名:包名+类名(这里的全路径名之间用的是.点号)
二:获取数据库连接:
1)这里的jdbc.mysql://localhost:3306/jt_db;这里的 localhost主机或者主机对应的ip地址可以省略,另外3306可以省略
2)DriverManager:驱动管理器
3)这里的URL的作用是写所连接的库的具体位置
4)上面的3306类似于网址上面的80端口;而localhost类似于网址上面的localhost
5)这里在书写所需要连接的数据库的位置时,之间采用的是/分隔
三:获取传输器(两者之间来回跑:快递员)
statement:执行sql语句
四:利用传输器执行sql语句,然后返回一个执行结果
1)作用:传输器负责将sql语句传到mysql数据库服务器上,然后在mysql 中执行好结果,然后将结果以ResultSet集合的形式返回
2)ResultSet集合:从这个对象中可以获得sql语句返回的结果
3)这里采用的是executorQuery,这是由于查询返回的是表格,而增删改返回的是影响的行数,所以采用的是executorUpdate()
五:处理执行结果:
(一)rs.next():判断下一条还有没有记录,是rs的专有获取数据的方法
(二)rs.getInt()、getDouble()、getString()是ResultSet里面的方法
上面是通过一个浮标执行的,首先浮标是在表头一行,然后rs.next()为正,那么浮标就会向下运行一行,并读取每一行的数据
此外在rs.getInt(“id”)里面除了可以写id以外,我们还可以写1,1代表的是第一列,但是这种模式一般不建议使用
rs里面包含了一个表格和一个rs.next()方法
六释放资源:
如果不释放资源,那么当属于京东淘宝之类的电商上面时,就可能出现宕机
谁最晚获取,谁最先关闭
二:优化代码:
1.在main方法中,我们可以将异常抛出吗?
答案:不可以,由于main方法是入口,那么如果异常抛出,那么无人处理异常
2.什么时候我们应该声明异常?
在被调用的方法上面,我们应该注意当被调用的时候,应该将哪些容易出现异常的地方告诉调用者,当然这种异常是环境或者传参的时候造成的异常
3.如果是全路径名错了,找不到类
那么会报出Class Not Found Exception异常
4.最后一行可以直接写syst即可,这是有内容的
5.再不知道长度的时候,采用遍历的方式