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. replace all

    OPTION COPY OUTREC FINDREP=(INOUT=(X'0E',X'400E', X'0F',X'0F40'))

  2. GBRT(GBDT)(MART)(Tree Net)(Tree link)

    源于博客 GBRT(梯度提升回归树)有好多名字,标题全是它的别名. 它是一种迭代的回归树算法,由多棵回归树组成,所有树的结论累加起来得到最终结果.在被提出之初与SVM一起被认为是泛化能力较强的算法. ...

  3. ubuntu上安装notepadpp

    Notepad++是一套非常有特色的自由软件的纯文字编辑器(许可证:GPL).有完整的中文化接口及支持多国语言编写的功能(UTF8 技术).它的功能比 Windows 中的 Notepad(记事本)强 ...

  4. 【To Read】

    Maximal Rectangle Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle conta ...

  5. 给大家分享一张CSS选择器优选级图谱 !

  6. SPSS能做Cochran-Armitage趋势检验吗

    SPSS能做Cochran-Armitage趋势检验吗 Cochran-Armitage (CA) 趋势检验是一种用于分析1个二分类变量和1个有序分类变量关联性的统计方法,由Cochran和Armti ...

  7. date、cal和clear命令

    一.date命令 date命令的功能:date命令是显示或设置系统时间与日期. 很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作.延时通常用于脚本执行过程中提供一段等待 ...

  8. python爬虫:一些爬虫常用的技巧

    1.基本抓取网页 get方法 import urllib2 url = "http://www.baidu.com" response = urllib2.urlopen(url) ...

  9. C++运行时类型识别

    通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型. 通过下面两个操作符提供 RTTI: 1. typeid 操作符,返回指针或引用所指对象的实际类 ...

  10. 块级元素及内联元素对margin、padding的态度

    1.块级元素 margin:跟标准一样,设置该块级元素边框与同级兄弟元素或者父元素的距离,俗称外边距. padding:先延伸边框(也就是优先改变元素尺寸而不动元素中内容的位置),当边框碰到父元素的边 ...