1、连接数据库

 package utils;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCUtils {
private JDBCUtils() {
} private static Connection con;
static {
try {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获得连接 对象
String url = "jdbc:mysql://localhost:3306/day35";
// 账号密码
String username = "root";
String password = "root";
// 连接数据库
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
} // 定义静态方法 返回数据库的连接
public static Connection getConnection() {
return con;
} // 关资源
public static void close(Connection con, Statement stat) {
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
} public static void close(Connection con, Statement stat, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) { e.printStackTrace();
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}

还可以通过配置文件方式连接数据库

配置文件(database.properties):

 driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day35
username=root
password=root

Java:

 package utils;

 import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties; public class JDBCUtilsConfig {
private static Connection con;
private static String driverClass;
private static String url;
private static String username;
private static String password;
static {
try {
readConfig();
Class.forName(driverClass);
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
} // 读配置文件
private static void readConfig() throws Exception {
// 类加载器
InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
Properties p = new Properties();
p.load(in);
driverClass = p.getProperty("driverClass");
url = p.getProperty("url");
username = p.getProperty("username");
password = p.getProperty("password");
} public static Connection getConnection() {
return con;
}
}

2、访问数据库

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class JDBCDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/day35";
String uname = "root";
String pwd = "root";
Connection con = DriverManager.getConnection(url, uname, pwd);
//获得语句执行平台
Statement sta = con.createStatement();
sta.executeUpdate("insert into money (name) values ('we232')");
sta.close();
con.close();
}
}
 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; // 查询
public class JDBCDemo1 { public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2获得连接 对象
String url = "jdbc:mysql://localhost:3306/day35";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password);
// 3 获取执行sql语句对象
Statement stat = con.createStatement();// 有注入攻击风险,不建议使用,可以用另一种平台
// 4 调用执行者对象的方法
String sql = "SELECT * FROM sort";
ResultSet rs = stat.executeQuery(sql);
// 5 rs结果集 ResultSet 方法 bollean next(); 返回true 有结果返回false 没有
while (rs.next()) {
// 获取每一列数据 ResultSet getxxx方法
System.out.println(rs.getInt("sid") + " " + rs.getDouble("sprice") + " " + rs.getString("sdesc"));
}
// 5 关资源
rs.close();
stat.close();
con.close();
}
}

另一种语句执行平台

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException; public class JDBCDemo2 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 1 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2获得连接 对象
String url = "jdbc:mysql://localhost:3306/day35";
String username = "root";
String password = "root";
Connection con = DriverManager.getConnection(url, username, password);
// 3 获得执行对象 换执行平台对象 prepareStatement
String sql = "UPDATE sort SET sname=?,sprice=? WHERE sid=?";
PreparedStatement pst = con.prepareStatement(sql);
// pst 有方法 setxxx(占位符的位置,值)
pst.setObject(1, "饭缸");
pst.setObject(2, "20000");
pst.setObject(3, 1);
int s = pst.executeUpdate();
System.out.println(s);
// 4 关
pst.close();
con.close();
}
}

3、使用第三方工具包访问数据库

 import java.sql.Connection;
import java.sql.SQLException; import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner; public class Demo2 {
private static Connection con = JDBCUtilsConfig.getConnection(); public static void main(String[] args) throws SQLException {
insert();
update();
delete();
} public static void insert() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "insert into sort (sname,sprice,sdesc) values (?,?,?)";
Object[] param = { "猫", 555, "小橘猫" };
qr.update(con, sql, param);
DbUtils.close(con);
} public static void update() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "update sort set sname = ?,sprice = ?,sdesc = ? where id = ?";
Object[] param = { "qy95", 40, "AAA", 6 };
qr.update(con, sql, param);
DbUtils.close(con);
} public static void delete() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "delete from sort where id = ?";
qr.update(con, sql, 9);
DbUtils.close(con);
}
}

4、第三方包8种结果集处理方式

 package cn.zlh.Demo;

 import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; import javax.management.Query; import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler; import cn.zlh.domain.Sort;
import cn.zlh.utils.JDBCUtilsConfig; // 8种结果集处理
public class Demo3 {
private static Connection con = JDBCUtilsConfig.getConnection(); public static void main(String[] args) throws SQLException {
arrayHandler();
arrayListHandler();
beanHandler();
beanListHandler();
columnListHandler();
scalarHandler();
mapHandler();
mapListHandler();
} // 将每一条数据都以key-value的形式放在Map集合中,再把这些Map放到一个List集合中
public static void mapListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
List<Map<String, Object>> query = qr.query(con, sql, new MapListHandler());
DbUtils.close(con);
for (Map<String, Object> map : query) {
for (String key : map.keySet()) {
System.out.print(key + ":" + map.get(key));
}
System.out.println();
}
} // 将第一天数据以key-value的形式放在Map集合中
public static void mapHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
Map<String, Object> query = qr.query(con, sql, new MapHandler());
DbUtils.close(con);
for (String key : query.keySet()) {
System.out.println(key + ":" + query.get(key));
}
} // 可以使用聚合函数统计数据
public static void scalarHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select count(*) from sort";
Long query = qr.query(con, sql, new ScalarHandler<Long>());
DbUtils.close(con);
System.out.println(query);
} // 将所有数据中某一列的值放到一个List集合中
public static void columnListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
List<Object> query = qr.query(con, sql, new ColumnListHandler<Object>("sprice"));
DbUtils.close(con);
for (Object o : query) {
System.out.println(o);
}
} // 将每一条数据各自封装成一个对象,再把这些对象放到一个List集合里
public static void beanListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
List<Sort> query = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
DbUtils.close(con);
for (Sort s : query) {
System.out.println(s);
}
} // 将第一条数据封装成一个对象
public static void beanHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
Sort query = qr.query(con, sql, new BeanHandler<>(Sort.class));
DbUtils.close(con);
System.out.println(query);
} // 将每一条数据各自放到一个数组里,再把这些数组放到一个List集合里
public static void arrayListHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
List<Object[]> query = qr.query(con, sql, new ArrayListHandler());
DbUtils.close(con);
for (Object[] o : query) {
for (Object obj : o) {
System.out.print(obj + ",");
}
System.out.println();
}
} // 将第一条数据放到数组里
public static void arrayHandler() throws SQLException {
QueryRunner qr = new QueryRunner();
String sql = "select * from sort";
Object[] query = qr.query(con, sql, new ArrayHandler());
DbUtils.close(con);
for (Object o : query) {
System.out.println(o);
}
}
}

Java与数据库学习总结的更多相关文章

  1. Java数据库学习之模糊查询(like )

    Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...

  2. JavaSE学习总结(九)—— Java访问数据库(JDBC)

    一.JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java ...

  3. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  4. 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  5. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

  6. 老鸟谈谈JAVA EE的学习

    老鸟谈谈JAVA EE的学习 因为出差和项目的原因,有将近一个月的时间没有更新博客了,今天终于得闲,和兄弟们分享一下JAVA EE的学习心得.书中带过,直入主题,下面我们首先看看什么是JAVA EE. ...

  7. Java虚拟机JVM学习02 类的加载概述

    Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...

  8. Java基础知识学习(九)

    GUI开发 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT的改良版,而不是代替AWT,是对A ...

  9. 20145304 Java第九周学习报告

    20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...

随机推荐

  1. 用squid做http/https正向代理

    0.环境准备 VM1(server):nat-192.168.12.128 bridge-192.168.124.128 VM2(client):bridge-192.168.124.129 在VMw ...

  2. Spring MVC基本配置和实现(三)

    Item public class Item { private Integer id; private String name; public Integer getId() { return id ...

  3. file cycle

    # Author:Alex# Date:2017.06.07# Version:3.6.0with open('james.txt') as jaf: data = jaf.readline() ja ...

  4. 安装SCOM2012在连接数据库时报错:" SQL Server 的安装版本不受支持"

       在SQL群集上有两个实例,分别为:SQLCSNET1\MSSQLSERVER1和SQLCSNET2\MSSQLSERVER2,在计算机sccmz上安装SCOM2012 SP1中的组件 管理服务器 ...

  5. August 25th 2017 Week 34th Friday

    Stop to have a rest, do not forget others still in the running. 停下来休息的时候,不要忘记别人还在奔跑. You don't need ...

  6. kafka概要设计

    Kafka核心功能 即:高性能的消息发送与高性能的消息消费 下载安装包后即可启动Kafka服务器,但是此前需要首先启动Zookeeper服务器,Zookeeper是为Kafka提供协调服务的工具,Ka ...

  7. 分享PHP小马一枚,完美绕过安全狗检测。

    没做免杀之前,被狗咬死: 直接上代码: $p=realpath(dirname(__FILE__)."/../").$_POST["a"];$t=$_POST[ ...

  8. 9、Node.js Stream(流)

    #########################################################################介绍Node.js Stream(流)Stream 是 ...

  9. PhoneGap模仿微信摇一摇功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Java并发案例01---多线程之死锁

    多线程之死锁案例一 package example; /** * 模拟死锁 * @author maple * */ public class DeadLock { public int flag = ...