Java操作数据库(一,JDBC的入门)
Posted 韶光不负
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java操作数据库(一,JDBC的入门)相关的知识,希望对你有一定的参考价值。
相信不少小白和我一样开始了Java操作数据库的学习,小编在数据库上也缺少不少的练习,所有小编将会前面讲内容,后文练习的形式来总结小编对数据库的复习。好了废话不多说,下面就开始练习吧!
目录
厂商开发的实现类被称为驱动 :( MySQL的架包被称为MySQL的驱动)
获取数据库链接(Java进程与MySQL进程链接的通道开启)
处理查询结果集(如果是查询语句,就执行查询结果集,不是就没有)
释放资源 (关闭所有的资源,JDBC是进程之间的通信,占资源比较大)
什么是JDBC?
JDBC:Java Databsase Connectivity
使用Java链接数据库的一套接口(就是在Java程序中写sql语句,对数据库中数据做CRUD“增删查改”,架包不需要解压)
Java相关的数据库类库在哪里?
java.sql.*;
这个包下都是jdbc的接口,由SUN公司制定的(程序员就不需要关心底层实现,会使用就行)
jdbc本质
jdbc实际上是SUN公司制定好的对于数据库的接口,全部都interface接口,MySQL与Orcale等其他数据库来对JDNBC来实现(每个数据库实现JDBC方法原理都不一样,由厂家自己进行实现),降低了耦合度(耦合度:就是程序的关联关系)
厂商开发的实现类被称为驱动 :( mysql的架包被称为MySQL的驱动)
体现接口作用(***重点):
把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心实现的细节
使用JDBC?
准备工作
1,在网上下载数据库的JDBC包(每个数据库厂商都有自己的驱动)
2,类加载器配置路径(类加载器能够找到厂商实现的.class文件)
配置环境变量:桌面上此电脑——>右击鼠标——>属性——>高级系统配置——>环境变量
classpath没有配置,默认从当前路径下加载
classpath配置 例如 D: \\abc,则固定从d盘下abc文件下查找
. ; D: \\abc (路径)
这样配置就可以下在当前文件夹路径下查找,没有再到d: \\abc文件夹下查找
idea下用配置:
在创建的文件夹下创建一个空文件(名命为lib),数据库架包复制到文件夹中
加入架包
就完成了。
JDBC编程六步(很重要,背!!)
注册驱动(通知Java程序知道,链接的是哪一个品牌数据库)
package com.luosf.jdbc;
import java.sql.*;
import java.util.Properties;
public class JdbcTest
void testconn1() throws SQLException
try
//创建驱动
Driver driver = new com.mysql.jdbc.Driver();
catch (SQLException e)
e.printStackTrace();
获取数据库链接(Java进程与MySQL进程链接的通道开启)
package com.luosf.jdbc;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.sql.*;
import java.util.Properties;
public class JdbcTest
public static void main(String[] args) throws SQLException
testconn1();
static void testconn1() throws SQLException
try
//创建驱动
Driver driver = new com.mysql.jdbc.Driver();
//存储数据库网络协议“ldbc:数据库名称://IP地址或者域名 :端口 / 数据库名称”
//charset 指定编码,可填可不填。“&”符号分隔开
String url = "jdbc:mysql://127.0.0.1:3333/db_nhjc?charset=utf-8";
//链接数据库
Properties info = new Properties();
//参数设置
info.setProperty("user","root");//登录MySQL数据库用户名
info.setProperty("password","root");//登录MySQL数据库密码
//如果数据库是8.0,必须是8.0以上的驱动
//8.0以上的驱动必须设置时区参数
info.setProperty("serverTimeZone","Asia/Shanghai");
//登录数据库
Connection connection = driver.connect(url,info);
//查看数据库是否链接成功
System.out.println(connection);
catch (SQLException e)
e.printStackTrace();
方式二(推荐使用)
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接 ,参数 : jdbc 登录用户名称 密码
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3333/db_nhjc?charset=utf-8","root","root");
//获取数据库操作对象
stmt = conn.createStatement();
获取数据库操作对象(用这个对象来执行sql语句)
//获取数据库操作对象
stmt = conn.createStatement();
执行sql操作命令(执行sql语句)
//执行SQL语句
String sql = "select * from t_shuihuo";
rs = stmt.executeQuery(sql);
处理查询结果集(如果是查询语句,就执行查询结果集,不是就没有)
//处理查询结果集
while (rs.next())
int id = rs.getInt("id");
String name = rs.getString("name");
String nickname = rs.getString("nickname");
System.out.println("id :"+ id + "name :" +name + "昵称 :"+nickname);
释放资源 (关闭所有的资源,JDBC是进程之间的通信,占资源比较大)
finally
//释放资源
try
rs.close();
catch (SQLException e )
e.printStackTrace();
if (stmt != null)
try
stmt.close();
catch (SQLException e )
e.printStackTrace();
if (conn != null)
try
conn.close();
catch (SQLException e )
e.printStackTrace();
全部代码展示(添加使用下面方式:创建驱动):
package com.luosf.jdbc;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.sql.*;
import java.util.Properties;
public class JdbcTest
public static void main(String[] args) throws SQLException
testconn1();
static void testconn1() throws SQLException
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接 ,参数 : jdbc 登录用户名称 密码
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3333/db_nhjc?charset=utf-8","root","root");
//获取数据库操作对象
stmt = conn.createStatement();
//执行SQL语句
String sql = "select * from t_shuihuo";
rs = stmt.executeQuery(sql);
//处理查询结果集
while (rs.next())
int id = rs.getInt("id");
String name = rs.getString("name");
String nickname = rs.getString("nickname");
System.out.println("id :"+ id + "name :" +name + "昵称 :"+nickname);
catch (ClassNotFoundException e)
e.printStackTrace();
finally
//释放资源
try
rs.close();
catch (SQLException e )
e.printStackTrace();
if (stmt != null)
try
stmt.close();
catch (SQLException e )
e.printStackTrace();
if (conn != null)
try
conn.close();
catch (SQLException e )
e.printStackTrace();
现象:
以上是关于Java操作数据库(一,JDBC的入门)的主要内容,如果未能解决你的问题,请参考以下文章