需要注意,JDBC并不能直接访问数据库,而是要依赖数据库厂商提供的驱动程序。所以第一步是干嘛呢?当然是导入驱动jar包了,这个需要去官网下载对应的jar包,MySQL、SQL Server、DB2、Oracle 等等的驱动都不一样。这里可以参考下这位前辈的博客:https://blog.csdn.net/qq243920161/article/details/78971861 这是我至今看过的最详细简单粗暴的博客。感谢!!废话不多说,直接进入主题。
当时学java JDBC的时候还没有学数据库原理,现在学了 SQL Server 拿来练练手,体会体会。使用JDBC技术就四个步骤 ,就是学几个接口的用法嘛!不难,这里一一来讲:
一、加载JDBC驱动程序(使用DriverManager 类)
(只需要在第一次访问数据库的时候加载一次就行)
代码如下:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
里面是驱动程序,写入对应的就行,不知道就问问度娘,比如SQL Server的驱动是 com.microsoft.sqlserver.jdbc.SQLServerDriver 。注意还要导入驱动包,这个有数据库商家提供,下载就行,这里可以去上面那位前辈的云盘下载,百度也行 “sqljdbc4.jar” 这个。
二、连接数据库(使用Connection 接口)
(每次访问创建一个Connection对象)
代码如下:
Connection con = DriverManager.getConnection(url,usename,password);
url 就是地址+端口组成的,各种数据库可能有点区别,可以百度查这个。这里以SQL Server为例是 "jdbc:sqlserver://127.0.0.1:1433;databaseName=test" databaseName可以不写。 usename 用户名,password 密码。
下面是上面两个步骤的测试代码:
package Main;
import java.sql.*;
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String usename="sa";//这里输入你的数据库登录账号
String password="123456";//这里输入登录密码;
//固定用法,地址使用的本地地址,加载了里面的一个库,也可以不加载
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=test";
//重点一 来了》》》 加载JDBC-ODBC桥的驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//重点二 来了》》》连接数据库
Connection con = DriverManager.getConnection(url,"sa","1");
System.out.println("数据库连接成功");
//关闭连接
con.close();
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如果提示"数据库连接成功",恭喜你,你已经成功一半了。如果有的话emmmm,可能挺费时间去弄,防火墙啊、端口什么的、慢慢调吧!调好记得重启电脑。参考N多大神的博客一定会找到办法的,因为我就是这样学过来的。
三、向数据库发送SQL语句(Statement、PreparedStatement、ResultSet 接口)
接口众多不用刻意去记方法,用的时候查API文档就行。
获取Statement类对象,然后可以通过各种方法进行对数据库的查询、修改,并将结果集存放在ResultSet类对象中。我们先看下数据库中的表和代码。
package Main;
import java.sql.*;
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String usename="sa";//这里输入你的数据库登录账号
String password="123456";//这里输入登录密码;
//固定用法,地址使用的本地地址,加载了里面的一个库,也可以不加载
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=test2";
//重点一 来了》》》 加载JDBC-ODBC桥的驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!");
//重点二 来了》》》连接数据库
Connection con = DriverManager.getConnection(url,usename,password);
System.out.println("数据库连接成功");
//创建Statement对象处理查询结果
Statement sql=con.createStatement();
ResultSet res=sql.executeQuery("select * from course");
//注意 一定要res.next()才能读取到数据,否则报错。
//res.next(); System.out.println(res.getString("cs_id"));
while(res.next()) {
String id=res.getString("cs_id");
String name=res.getString("cs_nm");
String time=res.getString(3);//也可以用3代表第三列的字段;
System.out.print("课程号:"+id);
System.out.print(" 课时:"+time);
System.out.println(" 课程名:"+name);
}
//关闭连接
con.close();
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
当然了,可以进行各种精彩的SQL语句的操作,这个知识点有力地将程序设计与数据库有机的结合起来了,哈哈,别说,还挺好玩的!这里不一一举例,数据库学好一点就行。
再介绍一下 preparedStatement(String sql) 的用法。这个用法非常简单,实用。 我们知道发送一个SQL语句,数据库中的SQL解释器负责生成底层命令,然后执行命令,完成相关操作。如果不断提交Sql语句肯定会增加解释器负担。如果你英语好的话已经知道是什么意思了——预处理语句。对于JDBC,可以用该方法对SQL语句进行预处理,生成数据库底层内部命令,并将命令封装在PrepareStatement对象中。通过调用该对象相应方法执行底层数据库命令,这样就减轻了数据库负担,提高访问速度。
// ? 可以代替任何字段值。
PreparedStatement pre_sql=con.prepareStatement("select * from course where cs_id=?");
pre_sql.setString(1,"0001"); //1表示从左往右一个 ?
// pre_sql.setObject(1,"0001") Object方法是万能的,无视各种参数类型。
//相当于 pre_sql =con.prepareStatement(select * from course where cs_id="0001"); 一句
ResultSet res2=pre_sql.executeQuery();
res2.next();
String cs_id=res2.getString("cs_id");
String cs_nm=res2.getString("cs_nm");
System.out.println("cs_id="+cs_id+" cs_nam="+cs_nm);
executeQuery() 方法是在PrepareStatement对象中执行SQL查询,并返回该查询的ResultSet对象。
executrUpdat() 方法是在PrepareStatement对象中执行SQL语句,该语句一定是DML语句(如:insert,updata,delete)或者是无返回内容的DDL语句。
四、关闭连接
//关闭连接
con.close();
到这儿基础知识基本结束了
更加强大的用法还需不断探索学习
以上错误还请各位指正,谢谢!