mysql 第三课 jdbc基础操作
jdbc连接可以大致分为5步:
1.注册驱动
2.获取连接
3.编写语句
4.执行语句
5.关闭连接
其中可以设置参数等等。
1.我们先建一个项目目录:

其中com.etc.dao为数据访问对象
com.etc.config 为配置文件的获取键值
com.etc.domain是实现包
com.etc.util是工具包
db.properties是配置文件
2.先写一个配置文件 db.properties 和相应的使用文件 JDBCConfig.java
mysql.Driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://127.0.0.1:3310/day02
mysql.username=root
mysql.password=123456
package com.etc.config; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties; public class JDBCConfig {
public static String driver;
public static String url;
public static String username;
public static String password;
//必须使用静态代码块 优先加载 不然可能会报空指针异常
static {
//配置文件获取值
Properties pro = new Properties();
try {
//通过FileInputStream读文件
pro.load(new FileInputStream(new File("src/db.properties")));
//通过键获取值
driver = pro.getProperty("mysql.Driver");
url = pro.getProperty("mysql.url");
username = pro.getProperty("mysql.username");
password = pro.getProperty("mysql.password");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.编写用户类 UserDao.java
package com.ect.dao;
public class UserDao {
private int id;
private String name;
public UserDao() {
super();
}
public UserDao(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "UserDao [id=" + id + ", name=" + name + "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3.编写工具类 JDBCUtil.java
package com.etc.Util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import com.etc.config.JDBCConfig; public class JDBCUtil { static Connection conn = null;
static PreparedStatement st = null; /**
* 获取连接
*
* @return
*/
public static Connection getConnection() {
try {
// 注册驱动
Class.forName(JDBCConfig.driver);
// 连接数据库,传入库,账号,密码
conn = DriverManager.getConnection(JDBCConfig.url, JDBCConfig.username, JDBCConfig.password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
} /**
* 关闭连接
*
* @param st
*/
public static void close(Connection conn, PreparedStatement st, ResultSet rs) {
closeRs(rs);
closeSt(st);
closeConn(conn);
} public static void closeConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} public static void closeSt(PreparedStatement st) { if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} public static void closeRs(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
} }
}
4.编写CURD语句 JDBCDml.java
package com.etc.Util; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import com.ect.dao.UserDao; public class JDBCDml {
/**
* 查询语句
*
* @param sql
* @return
*/
// 查询语句 因为我们建立的是User表 传出来的值是对象 所以我们用一个集合来存储
public static List<UserDao> select(String sql) {
List<UserDao> list = new ArrayList<>();
Connection conn = null;
PreparedStatement st = null;
ResultSet rs=null;
try {
// 注册驱动与获取连接
conn = JDBCUtil.getConnection();
// 执行语句
st = conn.prepareStatement(sql);
// 结果集
rs = st.executeQuery();
// 获取每一个对象和相对应的值
while (rs.next()) {
int userid = rs.getInt("sid");
String username = rs.getString("name");
// 将值传给ud
UserDao ud = new UserDao(userid, username);
// 添加到集合
list.add(ud);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.close(conn,st,rs);
}
return list; } // 传一个对象用此方法
// public static ResultSet insert(UserDao ud) {
/**
* 插入语句
*
* @param sql
* @param pramas
* @return
*/
public static ResultSet insert(String sql, Object... pramas) {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
conn = JDBCUtil.getConnection();
// 创建语句
st = conn.prepareStatement(sql);
// 设置参数
for (int i = 0; i < pramas.length; i++) {
st.setObject(i + 1, pramas[i]);
}
// 设置参数,这是如果你需要传的是user对象则直接可以用get方法获取其相对应的值
// st.setInt(1,ud.getId());
// st.setString(2,ud.getName());
// 执行语句
st.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.close(conn,st,rs);
}
return rs; }
// 传一个对象用此方法
// public static void update(UserDao ud){ /**
* 更新语句
*
* @param sql
* @param pramas
*/
public static void update(String sql, Object... pramas) {
Connection conn = null;
PreparedStatement st = null;
try {
// 注册驱动与获取连接
conn = JDBCUtil.getConnection();
// 执行语句
st = conn.prepareStatement(sql);
// 设置参数
for (int i = 0; i < pramas.length; i++) {
st.setObject(i + 1, pramas[i]);
}
// 设置参数
// st.setString(1,ud.getName());
// st.setInt(2,ud.getId());
st.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.closeSt(st);
JDBCUtil.closeConn(conn);
}
} /**
* 删除语句
*
* @param sql
* @param pramas
*/
// public static void delete(UserDao ud) {
public static void delete(String sql, Object... pramas) {
Connection conn = null;
PreparedStatement st = null;
try {
// 注册驱动与获取连接
conn = JDBCUtil.getConnection();
// 执行语句
st = conn.prepareStatement(sql);
// 设置参数
for (int i = 0; i < pramas.length; i++) {
st.setObject(i + 1, pramas[i]);
}
// 设置参数
// st.setInt(1, ud.getId());
st.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭连接
JDBCUtil.closeSt(st);
JDBCUtil.closeConn(conn);
}
}
}
5.编写测试类 JDBCDemo.java
package com.etc.domain; import java.util.List; import com.ect.dao.UserDao;
import com.etc.Util.JDBCDml; public class JDBCDemo { public static void main(String[] args) {
//JDBCDml.insert("insert into sanguo (sid,name) values (?,?)","2","adaasd");
//JDBCDml.update("update sanguo set name=(?) where sid=(?)","awerq",2);
//JDBCDml.delete("delete from sanguo where sid=?",2); List<UserDao> list = JDBCDml.select("select * from sanguo");
for (UserDao sanGuo : list) {
System.out.println(sanGuo);
} //User();
} private static void User() {
UserDao ud = new UserDao();
ud.setId(4);
ud.setName("aa5453a"); //JDBCDml.insert(ud);
//JDBCDml.update(ud);
//JDBCDml.delete(ud);
} }
完成。现在只是自己写的连接 一些连接池啊 什么的都没有完成 等以后再更新。
需要把时间字段类型设置为“timestamp”,然后再在默认值中填写“CURRENT_TIMESTAMP”
mysql 第三课 jdbc基础操作的更多相关文章
- MySQL入门(1)——基础操作
MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...
- 深入浅出学习Hibernate框架(二):JDBC基础操作
上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...
- mysql更新(三)语句 库的操作 表的操作
04-初始mysql语句 本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show ...
- mysql第三篇:表操作
第三篇:表操作 一.什么是表 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 二.创建表 语法 CREATE TABLE 表名( 字段名1 类型 ...
- 三、Redis基础操作
前言: Redi是key-value的NoSQL,我们用Redis提供的redis-cli就能操作String类型key和各种数据类型value.但是放入的不是特定类型数据,添加的都是一个一个Stri ...
- MySQL 第三篇:表操作
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/moyand/p/9020698.html 二 表介绍 表相当于文 ...
- 深入学习之mysql(三)单表操作
1.创建表的结构和数据 CREATE TABLE `t_student`( `id` INT PRIMARY KEY, `stuName` VARCHAR(10) NOT NULL, `age` IN ...
- 潭州课堂25班:Ph201805201 MySQL第三课 (课堂笔记)
单表查询: select * from select sname from stu; 条件查询 select sname from stu where sid=2; select sname from ...
- MySQL第三课
首先创建一个数据库: CREATE DATABASE ku; Query OK, 1 row affected 查看一下是否有此数据库: SHOW DATABASES; +-------------- ...
随机推荐
- WatchKit编程指南:概览--Watch应用的体系结构
Apple Watch应用程序包含两个部分:Watch应用和WatchKit应用扩展.Watch应用驻留在用户的Apple Watch中,只含有故事板和资源文件,要注意它并不包含任何代码.而Watch ...
- 安装babel-preset-stage-0为了不打包所有的组件
今天 看到一段话 是否是我们可以通过这个自定义多种组件,但是只选择我们需要的组件进行打包
- height自适应
如果子元素没有设置 float 属性啥的,父元素就是自动适应子元素宽高的. 子元素如果全是浮动属性(float),那么父元素就没有高度. 除非,你在子元素最后加一个清除浮动( <div styl ...
- 【OI】二分图最大匹配
所谓二分图,是可以分为两个点集的图: 所谓二分图最大匹配,是两个点集之间,每两个不同点集的点连接,每个点只能连一个点,最大的连接数就是最大匹配. 如何解最大匹配,需要用到匈牙利算法. 另:本文写了很多 ...
- 将Gradle项目发布到Maven Central库中
本文主要介绍如何一个由gradle构建的项目部署到Maven Central. 网上大部分都是介绍如何将由maven构建的项目部署到Maven Central.与Gradle相关的比较少. 申请账号 ...
- More Effective C++: 05技术(29)
29:引用计数 本章首先实现一个带引用计数String,然后逐步优化,介绍引用计数的常规实现. 实现引用计数的String,首先需要考虑:引用计数在哪存储.这个地方不能在String对象内部,因为需要 ...
- 【JZOJ4835】【GDOI2017模拟10.31】量化交易
题目描述 数据范围 解法 贪心: 从左往右枚举,设枚举到元素为x,并维护一个堆: 设此时堆顶元素为y, 如果x大于y,那么x可以与y产生差价,立即将差价贡献给答案. 如果y之前已经和其他元素z产生过差 ...
- python 语法错误
- 洛谷3067 BZOJ 2679题解(折半搜索)
传送门 BZOJ传送门(权限题) 看到n小于20,就可以想到搜索 所有的数要么在集合a中,要么在集合b中,要么都不在 可是3^n复杂度会炸,我们考虑优化 可以利用折半搜索,将前面一半的所有可能情况与后 ...
- QT 中如何实现一个简单的动画
QT可以实现一下简单的动画,比如 运动的时钟 闪烁的按钮. 动画的实现: (1)创建一个定时器 (2)调用QWidget::update()通知界面重绘 实现一个按钮闪烁的例子: circlewidg ...