Java与数据库学习总结
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与数据库学习总结的更多相关文章
- Java数据库学习之模糊查询(like )
Java数据库学习之模糊查询(like ): 第一种方式:直接在SQL语句中进行拼接,此时需要注意的是parm在SQL语句中需要用单引号拼接起来,注意前后单引号之间不能空格 String sql = ...
- JavaSE学习总结(九)—— Java访问数据库(JDBC)
一.JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java ...
- 一位资深程序员大牛给予Java初学者的学习路线建议
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
- 老鸟谈谈JAVA EE的学习
老鸟谈谈JAVA EE的学习 因为出差和项目的原因,有将近一个月的时间没有更新博客了,今天终于得闲,和兄弟们分享一下JAVA EE的学习心得.书中带过,直入主题,下面我们首先看看什么是JAVA EE. ...
- Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- Java基础知识学习(九)
GUI开发 先前用Java编写GUI程序,是使用抽象窗口工具包AWT(Abstract Window Toolkit).现在多用Swing.Swing可以看作是AWT的改良版,而不是代替AWT,是对A ...
- 20145304 Java第九周学习报告
20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...
随机推荐
- 深入解析C++ STL中的常用容器
转载:http://blog.csdn.net/u013443618/article/details/49964299 这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的 ...
- java笔记--BigDecimal的使用
BigDecimal的运用 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877231.html "谢谢-- BigDec ...
- Ionic控件之——按钮(Button)
Ionic提供丰富的按钮特性,足以满足大部分的按钮实现需求. 一.HTML实现一个简单按钮: <button class="button"> 我是按钮 </but ...
- Python初学者第十九天 函数(3)
19day 函数 1.作用域 Python中,一个函数就是一个作用域.所有的局部变量都是放在当前的作用域里面 代码定义完成后,作用域已经生成,作用域链向上查找 2.匿名函数 当需要暂时性的用到一个函数 ...
- Python学习---抽屉框架分析[ORM操作]180314
Django ORM操作 1. 字段操作 class User(model.Model); u=字段 用处: 1 . ...
- 将旧的时间字符串转换为新的string时间字符串
旧的时间字符串-->simpledataformat1.parse(该字符串) 获得date类型 -->simpledataformat2.format(date) simpledatef ...
- 鸡肋提权之变态root利用
你急有毛用,我电脑没带,怎么搞? 联系了基友adminlm牛看看吧,他说有防护软件啥的,有root,无法UDF,于是我让他去Mof,经历一番周折,知道了,对mof目录也锁定了权限,无法用root导出m ...
- 3、NPM使用
内容:NPM介绍,安装web框架模块,一些基本命令 #####介绍NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: • 允许用户从 ...
- Java中的Scanner类
java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入.创建Scanner对象的基本语法: Scanner s = new Scanner(System. ...
- 14. Android框架和工具之 ImageLoader(图片加载)
1. 这个图片加载框架网友很多都已经使用过,而且分析也很到位,这里我就不写了,直接引用别人,尊重别人的劳动成果. 2. 参考如下: (1)Android 开源框架Universal-Image-Loa ...