开发者社区> 光仔december> 正文

【JSP开发】数据库连接与增删改查

简介:
+关注继续查看

一直都没有总结数据库连接与增删改查,今天做一些相关的小总结


JSP有自己的包的规范,要把每一个具体的功能的类放在相应的包下。

有关数据库的类都放在cn.hpu.bbs.util包下,对数据库操作的类放在cn.hpu.bbs.service包下,JavaBean放在cn.hpu.bbs.model包下。

我连接的是Mysql,事先要在工程中引入相应的jar包:mysql-connector-java-3.1.13-bin.jar


创建数据库:



数据库连接类:

package cn.hpu.bbs.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DB {
 
 // 定义MySQL的数据库驱动程序
 public static final String DBDRIVER = "com.mysql.jdbc.Driver" ;
 //定义mysql的数据库连接地址:
 public static final String DBDURL = "jdbc:mysql://localhost/bbs2014" ;
 //mysql数据库的连接用户名
 public static final String DBUSER = "root" ;
 //mysql数据库的连接密码
 public static final String DBPASS = "1234" ;
 
 public static Connection createConn(){
  Connection conn =null;
  try {
   Class.forName(DBDRIVER);
   conn=DriverManager.getConnection(DBDURL,DBUSER,DBPASS);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  
  return conn;
 }
 
 public static PreparedStatement prepare(Connection conn,String sql){
  PreparedStatement ps=null;
  try {
   ps=conn.prepareStatement(sql);
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return ps;
 }
 
 public static void close(Connection conn){
  if(conn==null) return;
  try {
   conn.close();
   conn=null;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 public static void close(Statement stmt){
  if(stmt==null) return;
  try {
   stmt.close();
   stmt=null;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 public static void close(ResultSet rs){
  if(rs==null) return;
  try {
   rs.close();
   rs=null;
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}


 Category的一个JavaBean:

package cn.hpu.bbs.model;

public class Category {
	private int id;
	private String name;
	private String description;
	
	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;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
}

 

 对数据库和Category的操作类:

//说白了就是增删查修

<pre name="code" class="java">package cn.hpu.bbs.service;

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 cn.hpu.bbs.model.Category;
import cn.hpu.bbs.util.DB;

public class CategoryService {
	public void add(Category c){
		Connection conn=DB.createConn();
		String sql="insert into category (name,description) values (?,?)";
		PreparedStatement ps=DB.prepare(conn, sql);
		try {
			ps.setString(1, c.getName());
			ps.setString(2, c.getDescription());
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DB.close(ps);
		DB.close(conn);
	}
	
	public List<Category> list(){
		Connection conn=DB.createConn();
		String sql="select * from category";
		PreparedStatement ps=DB.prepare(conn, sql);
		List<Category> categories=new ArrayList<Category>();
		try {
			ResultSet rs=ps.executeQuery();
			Category c=null;
			while(rs.next()){
				c=new Category();
				c.setId(rs.getInt("id"));
				c.setName(rs.getString("name"));
				c.setDescription(rs.getString("description"));
				categories.add(c);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DB.close(ps);
		DB.close(conn);
		
		return categories;
	}
	
	public void delete(Category c){
		deleteById(c.getId());
	}
	
	public void deleteById(int id){
		Connection conn=DB.createConn();
		String sql="delete from category where id=?";
		PreparedStatement ps=DB.prepare(conn, sql);
		try {
			ps.setInt(1, id);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DB.close(ps);
		DB.close(conn);
	}
	
	public void update(Category c){
		Connection conn=DB.createConn();
		String sql="update category set name = ? , description = ? where id = ?";
		PreparedStatement ps=DB.prepare(conn, sql);
		try {
			ps.setString(1, c.getName());
			ps.setString(2, c.getDescription());
			ps.setInt(3, c.getId());
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DB.close(ps);
		DB.close(conn);
	}
	
	public Category loadById(int id){
		Connection conn=DB.createConn();
		String sql="select * from category where id=?";
		PreparedStatement ps=DB.prepare(conn, sql);
		Category c=null;
		try {
			ps.setInt(1, id);
			ResultSet rs=ps.executeQuery();
			if(rs.next()){
				c=new Category();
				c.setId(rs.getInt("id"));
				c.setName(rs.getString("name"));
				c.setDescription(rs.getString("description"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		DB.close(ps);
		DB.close(conn);
		return c;
	}
}



这个数据库建立和关闭个人感觉不太规范,以前做的项目里面写的很规范,这次仅供参考学习。


现在在学SSH框架,JSP都是之前学的了。等到掌握了hibernate,数据库就不需要那么繁琐。笔者想说的是,即使有了框架,还是要老老实实的学好基础的东西,才能更加熟练的去运用框架,因为你懂得其中的机理。


转载请注明出处!程序猿之洞:http://blog.csdn.net/acmman

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
技术分享 | 测试平台开发-前端开发之数据展示与分析
测试平台的数据展示与分析,我们主要使用开源工具ECharts来进行数据的展示与分析。 ## ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表,功能非常强大,目前ECharts已经发布到ECharts 5版本。我们的项目也选择Echarts来作为我们的数据展示与分析工具。 ECharts官网: ```
14 0
Node.js爬取豆瓣数据
一直自以为自己vue还可以,一直自以为webpack还可以,今天在慕课逛node的时候,才发现,自己还差的很远。众所周知,vue-cli基于webpack,而webpack基于node,对node不了解,谈什么了解webpack。
1669 0
asp.net 连接新浪微博
资料收集 1 官方 http://open.weibo.com/sdk/js http://open.weibo.com/widget/js#connect   2 教程 http://zzk.
725 0
浅析图数据库 Nebula Graph 数据导入工具——Spark Writer
本文主要讲解 Nebula Graph 基于 Spark 的分布式数据导入工具—— Spark Writer,它基于 DataFrame 实现,能够将多种数据源中的数据转化为图的点和边批量导入到图数据库中
386 0
推荐25款很棒的 HTML5 开发框架和开发工具【上篇】
  HTML5 在不同的领域让网页设计更强大的。快速,安全,响应式,互动和美丽,这些优点吸引更多的 Web 开发人员使用 HTML5。HTML5 有许多新的特性功能,允许开发人员和设计师创建应用程序和网站,带给用户桌面应用程序的速度,性能和体验。
1092 0
spring boot2 整合(一续)Druid数据库连接池和FastJson
本项目教程环境建立在spring boot2 整合(一)Mybatis (特别完整!) 的基础上。 1. Druid配置 1.1 修改pom.xml com.
1360 0
mongodb数据结构学习1--增删改查
插入文档 在数据库中,数据插入是最基本的操作,在MongoDB使用db.collection.insert(document)语句来插入文档; document是文档数据,collection是存放文档数据的集合。
889 0
+关注
光仔december
目前致力于JavaEE(struts/hibernate/spring/MyBatis等框架)、数据库(Mysql/oracle)、静态页面(Html/Css)技术和脚本(JavaSript/JQuery/Ajax)等技术方面的研究
497
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载