JDBC的链接及封装
public static void add() {
// try catch 捕获异常,try有异常会跳到catch
Connection con = null;
try {
// 1.选择要连接哪一种数据库---JDBC加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.创建链接(主机名,端口号,用户名,密码)---url包含主机名+端口号+数据库
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yyy", "root", "123456");
// 3.选择操作的数据库--此动作在上一步的url中集成
// 4.创建命令窗口 写 sql语句
PreparedStatement pstmt = con.prepareStatement("insert into zhuce (name,password,sex,id) value(?,?,?,?)");
pstmt.setString(1, "8888");
pstmt.setString(2, "8888");
pstmt.setString(3, "F");
pstmt.setString(4, "8888");
// 5.运行sql语句 ,查看结果---增删改调用executeUpdate 返回受影响的行数;查询调用 executeQuery
// 返回查询结果集
int result = pstmt.executeUpdate();
System.out.println(result);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main (String[] args){
add();
}
以上是add方法,update和delete方法只是改变了sql语句
update://根据主键查询
PreparedStatement pstmt = con.prepareStatement("update zhuce set sex=?,id=? where name=? and password=?");
pstmt.setString(1, "M");
pstmt.setString(2, "2222");
pstmt.setString(3, "2222");
pstmt.setString(4, "1111"); delete://删除主键
PreparedStatement pstmt = con.prepareStatement("delete from zhuce where name=?and password=?");
pstmt.setString(1, "8888");
pstmt.setString(2, "8888");
JDBC的封装
将1,2步 close sql语句的输出 进行封装
public class JdbcUtil {
public static Connection getConnection(){
Connection con =null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/yyy", "root", "123456");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
public static void close(Connection con){
try {
if(con!=null){
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static int executeUpdate(String sql,Object[] params){
Connection con = getConnection();
int result =0;
try {
PreparedStatement pstmt = con.prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1, params[i]);
}
}
result = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
close(con);
}
return result;
}
}
package com.neuedu.bean;
import com.sun.org.apache.xml.internal.security.Init;
public class Student {
private Integer sid;
private String sname;
private Integer age;
private Integer sex;
//这四句代码就是javabean
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public Student(Integer sid, String sname, Integer age, Integer sex) {
super();
this.sid = sid;
this.sname = sname;
this.age = age;
this.sex = sex;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", age=" + age + ", sex=" + sex + "]";
}
}
public static int executeUpdate(String sql,Object... params)
增删改 方法简化
public static int update(Student student){
return JdbcUtil.executeUpdate("update student set sname=?,age=?,sex=? where sid=?",student.getSname(),student.getAge(),student.getSex(),student.getSid());
}
public static int add(Student student) {
return JdbcUtil.executeUpdate("insert into student (sid,sname,age,sex) values(?,?,?,?)", student.getSid(),student.getSname(),student.getAge(),student.getSex());
}
public static int delete(int id){
return JdbcUtil.executeUpdate("delete from student where sid=?", id);
}

.png)
public static List<Student> getStudents(){
Connection con = null;
List<Student> list = new ArrayList<>();
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/yyy", "root", "123456");
PreparedStatement pstmt = con.prepareStatement("select * from student");
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
Student student=new Student();
student.setSid(rs.getInt("sid"));
student.setSname(rs.getString("sname"));
student.setSname(rs.getString("age"));
student.setSname(rs.getString("sex"));
list.add(student);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(con!=null){
con.close();
}
} catch (Exception e2) {
// TODO: handle exception
}
}
return list;
}
}
public static void main (String[] args){
List<Student> students=getStudents();
System.out.println(students);
}
JDBC的链接及封装的更多相关文章
- Java JDBC 数据库链接小结随笔
Java JDBC 数据库链接小结随笔 一.链接数据库的步骤 二.关于Statement 和 PrepareStatement 两者区别 用法 三.关于 ResultSet 的一些小结 四.自定义 ...
- 理解class.forName() ---使用jdbc方式链接数据库时会经常看到这句代码
目录(?)[-] 官方文档 类装载 两种装载方法的区别 不同的类装载器 是否实例化类 在jdbc链接数据库中的应用 资源 原文地址:http://yanwushu.sinaapp.com/clas ...
- JDBC工具类—如何封装JDBC
“获得数据库连接”操作,将在以后的增删改查所有功能中都存在,可以封装工具类JDBCUtils.提供获取连接对象的方法,从而达到代码的重复利用. 该工具类提供方法:public static Conne ...
- jdbc工具类的封装,以及表单验证数据提交后台
在之前已经写过了jdbc的工具类,不过最近学习了新的方法,所以在这里重新写一遍,为后面的javaEE做铺垫: 首先我们要了解javaEE项目中,文件构成,新建一个javaEE项目,在项目中,有一个we ...
- JDBC中链接数据库前为什么要用Class.forName(驱动类)加载驱动类?
使用JDBC链接数据库时,为什么要先使用Class.forName(String name)来加载类? 答: 实际上就是为了加载类时,调用静态初始化块中的注册函数. 可以看一下MySql的Driber ...
- Java JDBC数据库链接
好久没有编写有关数据库应用程序啦,这里回顾一下java JDBC. 1.使用Java JDBC操作数据库一般需要6步: (1)建立JDBC桥接器,加载数据库驱动: (2)连接数据库,获得Connect ...
- JDBC连接数据库方法的封装,以及查询数据方法的封装
(在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...
- JDBC 对数据库连接的封装
1.BaseDao :抽象基类,其中定义了用于打开连接,得到Statement,执行SQL,关闭资源的基础数据库操作方法. 2.I***Dao :操作指定数据表的接口:定义了操作数据表的抽象方法. 3 ...
- JDBC创建链接的几种方式
首先,使用java程序访问数据库的前提 数据库的主机地址(ip地址) 端口 数据库用户名 数据库用户密码 连接的数据库 代码: private static String url = "jd ...
随机推荐
- CentOS-7.2安装Ambari-2.4.2
一,Ambari 是什么? Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目.目前最新的发布版本是 2.4.2. ...
- xdu_1165:均值滤波
题目: Problem A 均值滤波问题描述图像中的噪声在空间上的自相关很低,因此往往可以用均值滤波加以削弱.具体来说,对于每个像素点P(x; y),我们选出所有距P 的Manhattan 距离不超过 ...
- (转)浅析CSS——元素重叠及position定位的z-index顺序
多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...
- win10安装sqlserver2016准备
win10安装sql server2016需要注意: 一.下载jdk-8u121-windows-x64.exe这个安装,这个检测不通过会影响安装 二.把万维网服务的这个去掉,这个影响数据库实例的创建 ...
- [javascript] visible - 待写
摘要 jquery 有个筛选器 visible , 一般用于选择 可见元素 $('p:visible') 就是选择可见的 p 元素. 但发现有时候不可用.!!
- ubuntu下升级网卡驱动
ubuntu下升级网卡驱动 无线局域网环境下,有个笔记本儿的无线经常断,而其它的终端都好好的,唯独它不行.所以想到检查和更新下无线网卡的驱动看看.以下是操作流程,记录一下. 阅读说明:##为标签, / ...
- 初识RabbitMQ系列之一:简单介绍
一:RabbitMQ是什么? 众所周知,MQ是Message Queue(消息队列)的意思,RabbitMQ就是众多MQ框架其中的一款,开源实现了AMQP协议(官网:http://www.amqp. ...
- hadoop入门,跑出第一个WordCount
1.环境准备 下载:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz 解压:解压后,修改et ...
- ORACLE 11g 静默安装
整理下以前的文档,放到博客上面来以后能直接找到. 环境:oracle linux release 6.3 x86_84.oracle 11gR2 一.主机环境配置 1.1 gcc安装 在ISO文件的P ...
- [js高手之路] es6系列教程 - var, let, const详解
function show( flag ){ console.log( a ); if( flag ){ var a = 'ghostwu'; return a; } else { console.l ...