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. Web前端和后端开发的区别和要求

    Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...

  2. 分布式服务框架dubbo原理解析

    alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...

  3. NodeJS的特点

    一. NodeJS的特点 我们先来看看NodeJS官网上的介绍: Node.js is a platform built on Chrome’s JavaScript runtime for easi ...

  4. August 26th 2017 Week 34th Saturday

    Love means finding the beauty in someone's imperfections. 爱情就是在那个人的不完美中找到美. Our mate isn't actually ...

  5. MySQL忘记密码处理方法

    在windows下: 打开命令行窗口,停止mysql服务:        Net stop mysql 在cmd下启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe 执行:m ...

  6. 安装Jdk,tomcat【转载】

    一.下载安装对应的jdk,并配置Java环境. 官网下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-dow ...

  7. centos虚拟机安装,配置静态ip可以访问网络

    centos安装过程中需要注意几个问题 1.选择安装的软件 默认选择的是mininal,应该选择GNEME Desktop 安装的过程中可以设置network 配置linux网络命令 具体配置 退出键 ...

  8. spring的权限控制,过滤器

    spring的过滤器可以实现登录状态问题 1.创建一个AccessFilter类,基础代码 package com.ujia.util.access; import javax.servlet.htt ...

  9. 【nodejs】学习笔记

    学习链接:http://www.cnblogs.com/zhongweiv/p/nodejs_environment.html (一)简介及环境安装 Node.js是让Javascript脱离浏览器运 ...

  10. Java50道经典习题-程序23 求岁数

    题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁.问第4个人岁数,他说比第3个人大2岁.问第三个人,又说比第2人大两岁.问第2个人,说比第1个人大两岁.最后问第一个人,他说是10岁.请问 ...