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基础操作的更多相关文章

  1. MySQL入门(1)——基础操作

    MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...

  2. 深入浅出学习Hibernate框架(二):JDBC基础操作

    上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...

  3. mysql更新(三)语句 库的操作 表的操作

    04-初始mysql语句   本节课先对mysql的基本语法初体验. 操作文件夹(库) 增 create database db1 charset utf8; 查 # 查看当前创建的数据库 show ...

  4. mysql第三篇:表操作

    第三篇:表操作 一.什么是表 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 二.创建表 语法 CREATE TABLE 表名( 字段名1 类型 ...

  5. 三、Redis基础操作

    前言: Redi是key-value的NoSQL,我们用Redis提供的redis-cli就能操作String类型key和各种数据类型value.但是放入的不是特定类型数据,添加的都是一个一个Stri ...

  6. MySQL 第三篇:表操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/moyand/p/9020698.html 二 表介绍 表相当于文 ...

  7. 深入学习之mysql(三)单表操作

    1.创建表的结构和数据 CREATE TABLE `t_student`( `id` INT PRIMARY KEY, `stuName` VARCHAR(10) NOT NULL, `age` IN ...

  8. 潭州课堂25班:Ph201805201 MySQL第三课 (课堂笔记)

    单表查询: select * from select sname from stu; 条件查询 select sname from stu where sid=2; select sname from ...

  9. MySQL第三课

    首先创建一个数据库: CREATE DATABASE ku; Query OK, 1 row affected 查看一下是否有此数据库: SHOW DATABASES; +-------------- ...

随机推荐

  1. spark-ML基础

    一.ML组件 ML的标准API使用管道(pipeline)这样的方式,可以将多个算法或者数据处理过程整合到一个管道或者一个流程里运行,其中包含下面几个部分: 1. dataFrame:用于ML的dat ...

  2. Mysql+php报错原因

    SQL syntax --语法错误,看near,错误会在near后引号中的内容 的附近 Table/Database....... dosen't existes ---表/库(库名/表名) 不存在 ...

  3. IO-01. 表格输出

    本题要求编写程序,按照规定格式输出表格. 输入格式: 本题目没有输入. 输出格式: 要求严格按照给出的格式输出下列表格: ------------------------------------Pro ...

  4. could not insert: [com.trs.om.bean.UserLog] The user specified as a definer ('root'@'127.0.0.1') does not exist

    2019-07-01 11:24:09,315 [http-8080-24] org.hibernate.util.JDBCExceptionReporter logExceptionsWARN: S ...

  5. iOS从零开始 Code Review

    http://www.cocoachina.com/ios/20151117/14208.html 这篇帖子不是通篇介绍Code Review的方法论, 而是前大段记录了我们团队怎么从没有这个习惯到每 ...

  6. thinkphp常用的一些函数

    $this->display ( "Public:login" ); import ( 'Wechat', APP_PATH . 'Common/Wechat', '.cla ...

  7. 使用 Markdown Flow 画流程图

    使用 Markdown Flow 画流程图 好处是可以方便的使用 Git 管理版本 st=>start: 开始 e=>end: 结束 c1=>condition: A c2=> ...

  8. 自定义属性 —— data-*

    一.基本概念 在HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放.使用data-*可以解决自定义属性混乱无 ...

  9. 如何不让EditText不获得焦点

    http://blog.csdn.net/get123/article/details/9004661

  10. Nacos Committer 张龙:Nacos Sync 的设计原理和规划

    图:Nacos Meetup @杭州 与你同行,抬头便是星空. 本文整理自Nacos Committer 张龙的现场分享,阿里巴巴中间件受权发布. 随着 Nacos 1.0.0 稳定版的发布,越来越多 ...