前景说明:
在我们刚开始使用数据库的时候,发现只能在mysql编辑器里面使用sql语句来完成对数据库的操作,那我们怎么来通过Java来操控数据库呢?这个时候就有了JDBC的出现。
1.什么是JDBC
JDBC 指java数据库连接(Java Database Connectivity),是一种标准的Java应用编程接口( JAVA API),JDBC本质上是Sun公司制定的一套接口(interface)!原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句来达到操控数据库的功能。
从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java 编写不同类型的可执行文件,例如:
- Java 应用程序
- Java Applets
- Java Servlets
- Java ServerPages (JSPs)
- Enterprise JavaBeans (EJBs)
所有这些不同的可执行文件就可以使用 JDBC 驱动程序来访问数据库,这样可以方便的访问数据。JDBC 具有 ODBC 一样的性能,允许 Java 程序包含与数据库无关的代码。
2.连接步骤
1.注册驱动
首先需要导入mysql驱动jar包
第一步:在当前项目下创建一个lib的目录:
第二步:把mysql的驱动jar拷贝到lib目录:
第三步:把lib添加到项目中,作为当前项目的第三方库
然后找到自己的jar包导入即可
2.加载并连接驱动
注意:加载驱动类就只有一句话::Class.forName("com.mysql.jdbc.Driver"),而且要带上包名,不能只导入Driver,可以使用下面的方法,更快捷准确
//成员变量数据库连接对象
Connection myCon;
/**
* 连接数据库
* @param jdbc 方式
* @param username 用户名
* @param password 密码
*/
public void createCon(String jdbc,String username,String password){
try {
Class.forName("com.mysql.cj.jdbc.Driver");
myCon = DriverManager.getConnection(jdbc,username,password);
} catch (Exception e) {
e.printStackTrace();
System.out.println("数据库连接配置失败");
}
}
public boolean hasResult(String sql){
try {
Statement statement = myCon.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
if (resultSet.next()){
return true;
}
return false;
} catch (SQLException throwables) {
throwables.printStackTrace();
System.out.println("查询操作失败");
return false;
}
}
/**
* 查询数据库中的结果,获取为一个list<map>
* @param sql
* @return
*/
public List<Map<String,String>> queryResult(String sql){
try {
Statement statement = myCon.createStatement();
ResultSet resultSet = statement.executeQuery(AutoTools.replaceParam(sql));
//所有行存成一个list
List<Map<String,String>> datalist=new ArrayList<>();
while(resultSet.next()){
//每一行存成一个map
Map<String,String> lineData=new HashMap<>();
for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
//存储列的名称,和一行数据的对应值为键值对
lineData.put(resultSet.getMetaData().getColumnName(i),resultSet.getString(i));
}
datalist.add(lineData);
}
return datalist;
} catch (SQLException throwables) {
throwables.printStackTrace();
//即使报错了,也还是返回一个空列表。
return new ArrayList<>();
}
}