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 ...
随机推荐
- Android项目导入工程Module
在Android开发过程中,我们经常引用一些模块,或者自己封装好的Project.在Android Studio某个项目是可以引入多个Module的.这样导入Module的好处方便对源码修改以适合自己 ...
- promise异步编程的原理
一.起源 JavaScript中的异步由来已久,不论是定时函数,事件处理函数还是ajax异步加载都是异步编程的一种形式,我们现在以nodejs中异步读取文件为例来编写一个传统意义的异步函数: var ...
- python数据结构链表之单向链表
单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 表元素域ele ...
- filezilla里怎么解决中文乱码问题
使用Filezilla client FTP客户端登陆某些FTP站点会出现中文乱码,原因是FTP服务器端编码与filezilla client端编码不一致造成的.解决方法如下:文件-站点管理-选中要登 ...
- 关于frameset的一些小总结
如果我们在一个页面需要由多个子页面一同组成,那么我们可以通过frameset标签来嵌套别的页面 例如 这样的页面布局的思路是: 1,先将页面分为上下两部分也就是 A B 2,再将B部分分为左右两部分 ...
- 【css】border-image
1. border-image 一个新css3 样式 给边框增加图片,还可以拉升 或重复图片 round 为重复 sketch 为拉升 border: 15px solid transparent; ...
- windows下配置cygwin和dig的环境变量
配置cygwin和dig的环境变量 打开"控制面板"("开始">"设置">"控制面板"),然后双击" ...
- C++ 之 Asio 库
1 简介 Asio 是一个跨平台的 C++ 库,常用于网络编程.底层的 I/O 编程等 (low-level I/O),其结构框架如下: 2 使用 Asio 2.1 下载 Asio 可分为 ...
- 修改wampsever默认密码
wamp初始默认mysql账号:root 密码: 空 准备修改为,账号:root 密码:xys829475 1.在phpMyAdmin界面中点击[用户],将用户概况中的所有用户名为[root]的用户的 ...
- CentOS 7 安装Subversion, 并用Nginx代理
环境:CentOS 7.3.1611 分三步:第一步:安装subversion第二步:安装httpd第三步:安装nginx 操作步骤: 安装subversion, 命令 -> yum -y in ...