Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言
java连接数据库完整流程为:
1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式。
2,通过获得的信息完成JDBC实现连接数据库。
注:连接前请导入jar包,例:连接mysql数据库需要导入mysql-connector-java-5.1.39-bin.jar包
连接数据库的三种方式
三种方式中二,三最为常用
一,直接获取数据库信息,并jdbc驱动连接
这里写代码片 public static Connection connection() {
//获得连接数据库连接
Connection conn=null;
try {
//初始化Driver类,注册驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/web", "root", "root");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
二,获得db.properties文件中的配置信息获得
注解:
ResourceBundle 类的作用就是读取资源属性文件(properties),根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。
public class Jdbc_Conn2 {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
//通过ResourceBundle获得db文件中的信息
ResourceBundle bundle = ResourceBundle.getBundle("db");
//通过key值获得db文件中的配置信息
driver=bundle.getString(driver);
url=bundle.getString(url);
username=bundle.getString(username);
password=bundle.getString(password);
}
public static Connection mysqlconn() {
//连接数据库
Connection conn=null;
Class.forName(driver);
conn= DriverManager.getConnection(url, username, password);
return conn;
}
三、通过IO流获得db文件中配置信息
注解:
*首先,调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,而后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,在Java中所有的类都是通过加载器加载到虚拟机中的,
而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载文件资源*
public class Jdbc_Conn3 {
private static String dirver;
private static String url;
private static String username;
private static String password;
static {
//IO流
InputStream is=Jdbc_Conn3.class.getClassLoader().getResourceAsStream("db.properties");
Properties props=new Properties();
try {
props.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dirver=props.getProperty("driver");
url=props.getProperty("url");
username=props.getProperty("username");
password=props.getProperty("password");
}
public static Connection mysqlconn() {
//1,获得连接数据库的驱动
Connection conn=null;
Class.forName(dirver);
conn= DriverManager.getConnection(url, username, password);
return conn;
}
连数据库后,使用完毕需要关闭连接
关闭数据库需要关闭以下资源:1,Connection(连接).2,PreparedStatement(预编译).3,Result(结果集)
public static void mysqlcolse(Connection con,PreparedStatement pstem,ResultSet rs) {
try {
if(con!=null) {
con.close();
}
if(pstem!=null)
{
pstem.close();
}
if(rs!=null) {
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
完成以上步骤便是一个连接数据库的java模板了,以上连接方法与关闭方法存于一个java文件中即可完成。
增、删、改、查
前言
1 以下代码在完成连接数据库的基础之上完成,通过java实现对数据库的增删改查
一、查询功能
注:
Connection中prepareStatement()方法,提供占位符(?),占位符设置参数setXXX(index,value)。优点:改动参数时,不需改动sql,通过占位符修改。
ResultSet类,作为查询条件的返回集的作用
//先声明对象,优点在于方便下方任意代码块调用对象信息。
Connection con=null;
PreparedStatement pstm=null;
ResultSet rs=null; @Test
public void testJv3()
{
//1,通过JDBC的模板连接上数据库
con=Jdbc_Conn3.mysqlcon();
//2,编写sql语句
String sql="select * from user where uid=?";
try {
//3.预编译需要执行的sql
pstm = con.prepareStatement(sql);
//prepareStatement中占位符?,通过setXXX(index,values)来进行设置,index从1开始,
pstm.setInt(1, 1);
//执行sql并返回查询结果
ResultSet rs = pstm.executeQuery();
if(rs.next())
{
String password=rs.getString(3);
String uname=rs.getString(2);
System.out.println(uname+":"+password);
}else {
System.out.println("没有结果");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
Jdbc_Conn3.mysqlcolse(con, pstm, rs);
} }
额外知识点:查询条件输出方式
if():当只有一条结果时,可用if
while():当有多条结果时,可用while
二、增,删,改
增删改,只需要改对应sql即可,以下代码为模板。
PreparedStatement pstm=null;
Connection con=null;
//1,实例化MyDataSource
ComboPooledDataSource mdsc= new ComboPooledDataSource();
//2.从MyDataSource的池中获得连接对象
try {
con= mdsc.getConnection();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//3.写sql
String sql="insert into user values (null,?,?)";
//4,预编译
try {
pstm= con.prepareStatement(sql);
pstm.setString(1, "zj");
pstm.setString(2, "zj");
int col=pstm.executeUpdate();
if(col>0) {
System.out.println("添加成功:"+col+"条数");
}else {
System.out.println("添加失败");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtils_V3.release(con, pstm, null);
}
}
Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查的更多相关文章
- C++ API方式连接mysql数据库实现增删改查
这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...
- JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式
package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...
- Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...
- 注册Jdbc驱动程序的三种方式
注册Jdbc驱动程序的三种方式 1. Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver ...
- java 实现md5加密的三种方式与解密
java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...
- Java操作数据库实现"增删改查"
本文主要讲解JDBC操作数据库 主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一 DriverManager类 DriverManage类 ...
- 通过jdbc连接MySql数据库的增删改查操作
一.获取数据库连接 要对MySql数据库内的数据进行增删改查等操作,首先要获取数据库连接 JDBC:Java中连接数据库方式 具体操作如下: 获取数据库连接的步骤: 1.先定义好四个参数 String ...
随机推荐
- 解决Maven环境变量配置后,’mvn’不是内部或外部命令的问题
1. 前往https://maven.apache.org/download.cgi下载的Maven程序,解压放在一个路径下 2.新建环境变量MAVEN_HOME,赋值:解压路径如: D:\env\ ...
- Windows 10-限制Windows更新上传带宽
Windows Update Delivery Optimization可帮助您更快,更可靠地获取Windows更新和Microsoft Store应用程序. Windows Update Deliv ...
- Win10常见问题记录
基本信息 记录我在使用win10过程中遇到的一些问题 我所使用的两个win10系统 Win10 企业版 1607(家里电脑) Win10 专业版 1806(公司电脑) win10 开启Sets 请问您 ...
- cassandra读源码---Streaming
前言 cassandra的很多过程需要网络传输模块,需要在各个节点直接发送文件.包括加入节点,删除节点引起的不同节点的负责ring环的key值发生了变化,导致sstable需要在各个节点中移动. 整体 ...
- 性能测试工具 wrk 使用教程
文章首发自个人微信公众号:小哈学Java 个人网站地址:https://www.exception.site/wrk 被面试官经常问到之前开发的系统接口 QPS 能达到多少,经常给不出一个数值,支支吾 ...
- Redhat 平台下 LVM 管理说明
Redhat 平台下 LVM 管理说明 LVM 是 Logical Volume Manager(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力.LVM 可以帮助系统管理员为应用与用 ...
- Swagger如何访问Ocelot中带权限验证的API
先亮源代码:https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/SwaggerDe ...
- docker~aspnetcore2.0镜像缺少libgdiplus问题
回到目录 对于微软官方提供的镜像microsoft/aspnetcore2.0来说,它没有安装libgdiplus包,所以当你使用了draw去画图时,就会出现一些问题,我们一般会安装第三方的包包,ZK ...
- Java集合与泛型中的几个陷阱,你掉进了几个?
下面我总结了集合.泛型.数组转集合等一些常见的陷进,认真看完,相信你绝对有所收获. 1.List ,List<?> 与 List<Object> 有区别吗? 说实话,我敢保证很 ...
- Asp.Net Core微服务再体验
ASP.Net Core的基本配置 .在VS中调试的时候有很多修改Web应用运行端口的方法.但是在开发.调试微服务应用的时候可能需要同时在不同端口上开启多个服务器的实例,因此下面主要看看如何通过命令行 ...