源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
楼主: ttx9n

[JSP编程] JSP基于JDBC的数据库连接类实例

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2015-11-5 12:01:21 | 显示全部楼层 |阅读模式
这篇文章主要介绍了JSP基于JDBC的数据库连接类,以实例形式较为详细的分析了JDBC连接数据库的实现技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了JSP基于JDBC的数据库连接类。分享给大家供大家参考,具体如下:

/*
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.yanek.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.PropertyResourceBundle;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
/**
 * @author Administrator
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class Database {
 /**
 * 数据库访问URL
 */
 private static String url;
 /**
 * 数据库驱动
 */
 private static String driver;
 /**
 * 数据库访问用户名
 */
 private static String username;
 /**
 * 数据库访问口令
 */
 private static String password;
 /**
 * 访问类型
 */
 private static String type;
 /**
 * 数据源名称
 */
 private static String datasource;
 /**
 * 配置文件名称
 */
 private final static String fileName = "database";
 private static ThreadLocal connection = new ThreadLocal();
 static {
 config();
 }
 private static void config() {
 // 读取系统配置
 PropertyResourceBundle resourceBundle = (PropertyResourceBundle) PropertyResourceBundle
  .getBundle(fileName);
 // 将系统设置赋值给类变量
 Enumeration enu = resourceBundle.getKeys();
 while (enu.hasMoreElements()) {
  String propertyName = enu.nextElement().toString();
  if (propertyName.equals("database.url"))
  url = resourceBundle.getString("database.url");
  if (propertyName.equals("database.driver"))
  driver = resourceBundle.getString("database.driver");
  if (propertyName.equals("database.username"))
  username = resourceBundle.getString("database.username");
  if (propertyName.equals("database.password"))
  password = resourceBundle.getString("database.password");
  if (propertyName.equals("database.type"))
  type = resourceBundle.getString("database.type");
  if (propertyName.equals("database.datasource"))
  datasource = resourceBundle.getString("database.datasource");
 }
 }
 /**
 * 取得数据库连接
 * 
 * @return
 * @throws SQLException
 */
 public synchronized static java.sql.Connection getConnection()
  throws SQLException {
 Connection con = (Connection) connection.get();
 if (con != null && !con.isClosed()) {
  return con;
 }
 if ("pooled".equalsIgnoreCase(type)) {
  // 从JNDI中取得数据源
  try {
  // 此处对于不同的应用服务器,对env传入不同
  Hashtable env = new Hashtable();
  // 此处对于不同的应用服务器,对env传入不同
  Context ctx = new InitialContext(env); // 从命名系统中获取 DataSource
  // 工厂对象
  DataSource dataSource = (DataSource) ctx.lookup(datasource);
  con = dataSource.getConnection();
  connection.set(con);
  return con;
  } catch (NamingException e) {
  e.printStackTrace();
  }
 } else {
  // 直接使用JDBC驱动连接
  try {
  Class providerClass = Class.forName(driver);
  con = DriverManager.getConnection(url, username, password);
  con.setAutoCommit(false);
  connection.set(con);
  return con;
  } catch (ClassNotFoundException e) {
  e.printStackTrace();
  }
 }
 return null;
 }
 public static void commit() {
 Connection con = (Connection) connection.get();
 try {
  con.commit();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
 public static void rollback() {
 Connection con = (Connection) connection.get();
 try {
  con.rollback();
 } catch (SQLException e) {
  e.printStackTrace();
 }
 }
 public synchronized static void releaseConnection(Connection connection) {
 try {
  if (connection != null && !connection.isClosed())
  connection.close();
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 connection = null;
 }
 public static void main(String[] args) {
 try {
  System.out.println("conn:" + Database.getConnection());
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }
}

database.property文件
复制代码 代码如下:database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost/test?user=root&password=root&useUnicode=true&characterEncoding=gbk

希望本文所述对大家jsp程序设计有所帮助。

回复

使用道具 举报

0

主题

2万

回帖

55

积分

注册会员

Rank: 2

积分
55
发表于 2022-10-31 08:34:01 | 显示全部楼层
论坛有你更精彩!
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

87

积分

注册会员

Rank: 2

积分
87
发表于 2022-11-15 17:24:08 | 显示全部楼层
天天源码社区。。。。
回复 支持 反对

使用道具 举报

5

主题

2万

回帖

183

积分

注册会员

Rank: 2

积分
183
发表于 2022-11-27 03:24:37 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

4

主题

2万

回帖

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 2023-7-30 13:30:29 | 显示全部楼层
看看看咋么
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

176

积分

注册会员

Rank: 2

积分
176
发表于 2023-8-31 16:49:05 | 显示全部楼层
这个源码还可以
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

61

积分

注册会员

Rank: 2

积分
61
发表于 2023-10-17 01:51:48 | 显示全部楼层
很不错的玩意
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2023-10-20 04:49:16 | 显示全部楼层
好东西可以可以可以可以
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

100

积分

注册会员

Rank: 2

积分
100
发表于 2023-10-21 01:59:46 | 显示全部楼层
女生看了弄丢了卡萨诺的卡洛斯
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

100

积分

注册会员

Rank: 2

积分
100
发表于 2023-11-13 01:11:49 | 显示全部楼层
那三门,你们谁寂寞才快乐撒
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-23 18:09 , Processed in 0.231127 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表