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. SVN合并时报错:合并跟踪不允许丢失子树Merge tracking not allowed with missing subtrees; try restoring these items

    使用的是TortoiseSVN; Merge tracking not allowed with missing subtrees; try restoring these items 下面会有跟着几 ...

  2. [翻译] JHChainableAnimations

    JHChainableAnimations - (void)animationType_01 { /* * 缩放到0.8倍(执行spring动画效果的缩放)持续时间0.5s,完成了之后移动100的距离 ...

  3. golang 时间戳 时间格式化 获取当前时间 timestamp 计算时间差

    获取当前时间 func Now func Now() Time 1 Now returns the current local time. func (Time) UTC func (t Time) ...

  4. mysql install steps

    the official documents for mysql 5.6 install key steps: # Preconfiguration setup shell> groupadd ...

  5. pip install lxml mysql-python error

    问题0: 在安装 mysql-python时,会出现: sh: mysql_config: not found Traceback (most recent call last): File &quo ...

  6. java基础易混点

    1.进制转换由低到高:byte<short(char)<int<long<float<double 2.java八种基本数据类型(存在栈里):  整数类型  byte,s ...

  7. Java中this关键字使用小结

    当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this. 因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this ...

  8. Tableau10.4中智能显示点击后消失的解决方案

    如果你的电脑是Win10,并且是高分屏,可能会出现和我一样的问题,就点击智能显示后,发现找不到了. 那么解决方案就是: 这样就能找到智能显示了.

  9. 用Qt制作的Android独立游戏《吃药了》公布

           一个多月的努力最终有了回报,我自己研究制作的独立游戏<吃药了>.最终在360应用商店上线了.        这一款游戏呢.使用的是Qt开发的.事实上开发这款简单的应用之前.我 ...

  10. python SimpleHTTPServer

    Python2 使用的是SimpleHTTPServer python -m SimpleHTTPServer Python3 合并到了http.server python -m http.serve ...