这是我第一次写博客,其实之前也很想写一些东西,可是发现很多东西都不知道,在自学一段时间之后呢,发现有些Java的东西还是很好理解的。 我自己虽然也是一个小白,但是我明白那种自己敲代码的时候出错却找不到错误的感觉,所以我也想分享一下自己对JDBC的理解。嗯…大家觉得有点用的话点个赞呗!
好了也不多说,先来介绍下JDBC吧!什么是JDBC?如果你的英文不错的话,其实很好理解,JDBC(Java DateBase Connectivity ),也就是java数据库连接。虽然我们现在正常的开发基本上用不到了,但是我们也是应该知道如何使用,至少在面试的时候我还是碰到过此类的问题。面试官问我JDBC实现的流程是什么?用JDBC实现一个查询语句?我当时就蒙了,其实我也不明白为什么面试要问那些东西(自我觉得用不到)…但是没办法,自己回去之后还不是继续学这个…好了好了…我好像又扯远了。
JDBC的使用其实很简单,我把它大致分为了三大步:
说起来好像很简单的样子,其实真的很简单。这些方法对于初学者来说却是不容易记,下面我们来细分这三步
第一步:加载驱动类--------什么是驱动类?其实就是一个接口标准,跟大家讲个故事吧!事情是这样的,因为每个每个数据库的厂商都大不相同,而要记住每个厂商的加载驱动类的方式,其实不太现实(虽然现在网上一查一大把)。所以SUN公司召集了互联网的巨头,商量一个事,他说:“以后我来提供接口,你们按这个标准来实现,听见没?”。嗯…我夸大了,但是事情差不多是这样的。我得说说怎么加载驱动类了,首先,我用的是Eclipse连接的数据库,Oracle数据库不好用(要钱的,破解版的不想用)…
要加载驱动类,你得先导入一个jar包,用于连接数据库的,网上有很多,我用的是这个版本的。为什么用这个,我后面会说的。
导入jar包之后,就可以开始配置了,以后碰到加载驱动类,记住先把四大参数写出来:
嗯…四大参数就这么多,简单来说,第一个就是一个标准,每个数据库都不一样,这个不用纠结,第二个就是路径,把每一小步弄懂什么意思就行了,最后就是数据库的用户名和密码。如果理解四大参数,恭喜你,成功了一半了。接下来,我们就要加载驱动了,加载驱动直接运用反射机制就行了。下面是源代码:
import java.sql.Connection;
import java.sql.DriverManager;
public class Demo1 {
public static void main(String[] args) throws Exception{
/* jdbc四大配置参数:
* 1.driverClassName: com.mysql.jdbc.Driver
* 2.url: jdbc:mysql://localhost:3306/firstsql
* 3.username: root
* 4.password: 123
* 使用JDBC步骤:
* 1.加载驱动类
* 2.使用url,username,password 得到连接对象
* 3.使用DriverManger类中的getConnection得到Connection对象
* */
Class.forName("com.mysql.jdbc.Driver");//加载驱动
String url="jdbc:mysql://localhost:3306/firstsql";
String username="root";
String password="123";
Connection co = DriverManager.getConnection(url,username,password);
System.out.println(co); //结果为:com.mysql.jdbc.JDBC4Connection@5fcd892a
}
}
看!如上代码,JDBC的使用就是这么简单,记好几大步骤就行,英语好的人应该理解快些,加载驱动之后你需要得到Connection对象,那么就用DriverManger的getConnection( )这个方法获取,DriverManger的中文意思就是驱动管理嘛!怎么样,是不是很简单。其实 Class.forName(“com.mysql.jdbc.Driver”) 这一行代码不写也可以运行,但是仅限于jdbc4.0之后。因为所有的java.sql.Driver实现类,都提供了static块,块内的代码就是把自己注册到DriverManger中!jdbc4.0之后,每个驱动jar包中,在META-INF/services目录下提供了一个名为java.sql.Driver的文件。
下面来看看怎么使用JDBC完成增删查改吧!
这里把增删改放在一起,因为差别不大。对比使用JDBC,多了一个用Connection对象获取Statement对象,具体的使用还是看看源代码吧!如果不懂我说的意思,可以看看注释,注释写的很清楚:
package www.jdbc.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.junit.Test;
public class Demo2 {
/*一:得到数据库:
* 1.准备四大参数
* 2.加载驱动类
* 3.得到Connection对象
*
* 二:对数据库进行增删改
* 1.通过Connection对象创建Statement
* ->Statement语句的发送器,它的功能就是向数据库发送sql语句!
* 2.调用它的 int executeUpdate(String sql),它可以发送DML,DDL,int返回值就是表示影响几行
*
* */
@Test
public void test() throws Exception{
String DriverClassName="com.mysql.jdbc.Driver";
/*这是一种jdbc的协议格式
* jdbc:厂商名称:子协议(由厂商自己来规定)
* 对于mysql而言,子协议结构://主机:端口号/数据库名称
* */
//一:得到数据库
String url="jdbc:mysql://localhost:3306/firstsql";
String username="root";
String password="123";
Class.forName(DriverClassName);
Connection con = DriverManager.getConnection(url,username,password);
//对数据库进行增删改查
Statement statement = con.createStatement(); //通过Connection得到Statement对象
//String sql="insert into stu values('S006','zhaoliu','22','boy')"; //使用Statement对象发送sql增加语句
//String sql="update stu set name='huqi',age='20' where number='S006'" ;//修改语句
String sql="delete from stu where number='S006'";
int n = statement.executeUpdate(sql);
System.out.println(n);
}
}
这样的话就完成了增删改的操作了,返回的只是影响的行数,增加和修改的sql语句我都注释掉了,所以我估计直接粘贴复制的话应该是错的,所以要注意哦!
还是那句话,要使用JDBC,就必须准备四大参数,前面的步骤不变:
看起来复杂吗?多了两个步骤,是因为我分得比较细而已,实际上每个步骤也就一行代码。还是那句话,先搞清楚单词的意思,Statement有 报表的意思,那么就是用Connection对象获取报表对象,然后就可以用报表对象来发送sql查询语句了,得到的结果呢,是一张表,所以才要解析成数据嘛!如果我没写清楚,可以去看看java帮助文档,建议去看英文版的,多看看没坏处。下面来看看源代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.junit.Test;
@Test
public void test2() throws Exception{
/*
* 一:得到Connection对象
* 二:得到Statement对象,发送select语句
* 三:对查询返回的“表格”进行解析
* */
String DriverClass="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/firstsql";
String user="root";
String password="123";
Class.forName(DriverClass);
Connection con = DriverManager.getConnection(url,user,password);
Statement state = con.createStatement();
/*
* 调用Statement的ResultSet rs=executeQuery(String querysql) 获得结果集
* */
ResultSet rs = state.executeQuery("select * from stu");
/*
* 解析ResultSet
* 1.把行光标移动到第一行,可以调用next()方法完成
* */
while (rs.next()) { //把光标向下移动一行,并判断下一行是否存在!
String number=rs.getString(1); //通过列标号来获取该列的值
String name=rs.getString("name"); //通过列名来获取该列的值
int age=rs.getInt(3);
String sex=rs.getString("sex");
System.out.println("编号:"+number+"、姓名:"+name+"、年龄:"+age+"、性别:"+sex);
System.out.println("-------------------------------------------------------");
}
/*最后记得关闭资源(倒关)
* rs.close();
* state.close();
* con.close(); 这个东西必须要关闭,不关就死!
* */
}
输出结果集的方式还有一种,那种情况就是你不知道有几列,如下:
int count=rs.getMetaData().getColumnCount(); //获取结果集列的数量
while(rs.next()) { //遍历行
for(int x=1;x<=count;x++) //遍历列
{
System.out.print(rs.getString(x));
if(x<count)
System.out.print(", ");
}
System.out.println();
}
这样就可以使用JDBC完成对数据库的增删查改啦!怎么样,是不是很简单,对于初学者来说,至少对于我来说,刚开始是因为方法名字记不住,其实你只需要把它翻译成中文理解就可以了。好了,第一次写博客就写这么多吧!下次我们在来谈谈PreparedStatement吧!最后来总结一下吧!
一、使用JDBC:
jdbc四大配置参数:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/你数据库的名字
username: 你数据库的名字
password: 你数据库的密码
使用JDBC步骤:
1.加载驱动类
2.使用url,username,password 得到连接对象
3.使用DriverManger类中的getConnection得到Connection对象
二、使用JDBC完成增删改:
第一步:得到数据库:
准备四大参数
加载驱动类
得到Connection对象
第二步:对数据库进行增删改
通过Connection对象创建Statement
->Statement语句的发送器,它的功能就是向数据库发送sql语句!
调用它的 int executeUpdate(String sql),它可以发送DML,DDL,int返回值就是表示影响几行
三、使用JDBC完成查询(前面说的比较清楚,就偷个懒…):
得到Connection对象
得到Statement对象,发送select语句
对查询返回的“表格”进行解析
好啦!就到这里了,小白的第一次博客,可能有地方有错误或者没讲清楚,发现的大佬请指出…如果还有不懂得地方,可以私信或者留言,知无不言,言无不尽…
虽然不是什么好东西,毕竟是自己一个字一个字敲出来的,1
没有经过同意别转载哦 ↩︎