前言
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连接数据库的三种方式!!!并对数据库实现增删改查的更多相关文章

  1. C++ API方式连接mysql数据库实现增删改查

    这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...

  2. JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式

    package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...

  3. Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...

  4. 注册Jdbc驱动程序的三种方式

    注册Jdbc驱动程序的三种方式 1. Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver ...

  5. java 实现md5加密的三种方式与解密

      java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...

  6. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  7. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...

  8. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

  9. 通过jdbc连接MySql数据库的增删改查操作

    一.获取数据库连接 要对MySql数据库内的数据进行增删改查等操作,首先要获取数据库连接 JDBC:Java中连接数据库方式 具体操作如下: 获取数据库连接的步骤: 1.先定义好四个参数 String ...

随机推荐

  1. headfirst设计模式(8)—适配器模式与外观模式

    前言 这一章主要讲2个模式,一个是,适配器模式(负责将一个类的接口适配成用户所期待的),另外一个是外观模式(为子系统提供一个共同的对外接口),看完的第一反应是,为什么要把它们两放在同一章,难道它们有什 ...

  2. Genymotion Android模拟器Genymotion的安装和使用

    Android模拟器Genymotion的安装和使用 by:授客 QQ:1033553122 环境: Win7 Genymotion 2.12.0 下载地址:http://download.canad ...

  3. 排错-升级Exchange 2013 CU22后程序名称显示异常

    近期在按需更新Exchange 2013 CU22补丁以便解决Microsoft Exchange Server ADV190007 Guidance for "PrivExchange&q ...

  4. js导出excel表格并生成多sheet

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 学python走过的坑一 类的实例化

    运行结果:line 21, in <module>  s=speaker('ken',10,'aaa')TypeError: __init__() missing 1 required p ...

  6. 从壹开始微服务 [ DDD ] 之八 ║剪不断理还乱的 值对象和Dto

    缘起 哈喽大家周四好,时间是过的真快,这几天一直忙着在公司的项目,然后带带新人,眼看这周要过去了,还是要抽出时间学习学习,这些天看到群里的小伙伴也都在忙着新学习,还是很开心的,至少当时的初衷已经达到了 ...

  7. JS ES6的变量的结构赋值

    变量的结构赋值用户很多 1.交换变量的值 let x = 1; let y = 2; [x,y] = [y,x] 上面的代码交换变量x和变量y的值,这样的写法不仅简洁,易读,语义非常清晰 2.从函数返 ...

  8. 【反编译系列】三、反编译神器(jadx)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 今天在看玩Android网站,搜索反编译的时候,才发现有个更好用的反编译工具.特此记录下. 下载 http://www.wanand ...

  9. Entity Framework 查漏补缺 (二)

    数据加载 如下这样的一个lamda查询语句,不会立马去查询数据库,只有当需要用时去调用(如取某行,取某个字段.聚合),才会去操作数据库,EF中本身的查询方法返回的都是IQueryable接口. 链接: ...

  10. 全文检索-Elasticsearch (三) DSL

    DSL:elasticsearch查询语言elasticsearch对json 的语法有严格的要求,每个json串不能换行,同时一个json串和一个json串之间,必须有一个换行 DSL(介绍查询语言 ...