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 ...
随机推荐
- 2018-01-12 Antlr4添加中文变量赋求值,括号,各种问题
中文编程知乎专栏原文地址 例程(更多测试用例在此): 基数=100 基数×(基数+1)÷2 => 求值为5050 续上文Antlr4实现数学四则运算, 修改的语法规则部分: 程序: 声明+; 声 ...
- Windows Server 2016-Powershell新建用户补充
前边我们介绍到Windows Server 2016-图形化新建域用户(一) 及 Windows Server 2016-批量新建域用户(二) ,里边提到了批量通过new-aduser常见帐号,这里简 ...
- pytest框架之命令行参数1
前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...
- ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State
开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合 ...
- JVM监控命令
1.概述Jcmd是一个诊断Jvm的命令集工具, 集成了包括Jps, Jstack以及采集JFR信息等功能. 它必须运行在被诊断Jvm进程的同一台机器上.1)查询JVM进程及PID/dapeng-con ...
- java中的伪泛型---泛型擦除(不需要手工强转类型,却可以调用强转类型的方法)
Java集合如Map.Set.List等所有集合只能存放引用类型数据,它们都是存放引用类型数据的容器,不能存放如int.long.float.double等基础类型的数据. 使用反射可以破解泛型T类型 ...
- 使用 coverlet 查看.NET Core应用的测试覆盖率
代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率. Visual Studio 2017的企业版可以直接查看测试的代码覆盖率, ...
- C#委托、事件、线程
这是几个简单的例子,但是实际的开发中委托还还只在反射时用到过,事件的话只自己做了一次,并且还是特意去用的 ,实际上可以不用.线程的话,因为需要,所以用的会多点,这里主要是WS上的线程. 委托 在前面的 ...
- 痞子衡嵌入式:恩智浦i.MXRT系列微控制器量产神器RT-Flash用户指南
RT Flash English | 中文 1 软件概览 1.1 介绍 RT-Flash是一个专为基于NXP i.MX RT系列芯片的产品量产而设计的工具,其功能与官方MfgTool2工具类似,但是解 ...
- RESTful 规范
RESTful 规范 前言 rest 是一种软件架构风格,如果使用的是 rest 接口,那么就可以说你的接口是 restful. rest接口是围绕''资源''展开的,利用 HTTP 的协议,其实 r ...