浅析B/S架构数据库连接方式
package com.jdbc.dao; import java.sql.*;public class BaseDAO {//打开数据库链接public Connection getConn(){Connection conn = null;try {//加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//打开链接conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName = epetDB","sa","sa");} catch (ClassNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}return conn;}//(重写)关闭链接public void Close(Connection conn,PreparedStatement pstmt,ResultSet rs){try {//关闭结果集if (rs != null) {rs.close();}//关闭PerparedStatement对象if (pstmt != null) {pstmt.close();}//关闭链接if (conn != null) {conn.close();}} catch (Exception e) {// TODO: handle exception }}//(重写)关闭链接public void Close(Connection conn,PreparedStatement pstmt){try {//关闭PerparedStatement对象if (pstmt != null) {pstmt.close();}//关闭链接if (conn != null) {conn.close();}} catch (Exception e) {// TODO: handle exception }}//增删改操作public int Update(String sql,Object[] parm){int iRet = 0;Connection conn = null;PreparedStatement pstmt = null;try {conn = getConn();pstmt = conn.prepareStatement(sql);//循环赋值参数for (int i = 0; i < parm.length; i++) {//为预编译sql设置参数pstmt.setObject(i+1, parm);}//执行SQL语句iRet = pstmt.executeUpdate();} catch (Exception e) {e.printStackTrace();}finally{Close(conn,pstmt);}return iRet;} }
普及:
try{ //可能出现异常的代码 }catch(Execption e){ //如果发生异常处理的代码 }finally{ //无论是否异常都会执行的代码 try catch finally java中异常处理机制
我们来分析一下写一段代码,其中Update方法是用来更新数据的,其中我们可以看到try中包含了getConn()方法用来获取Connection连接对象,到最后我们可以在finally代码块中看到Close()方法用来关闭创建的Connection对象以及PreparedStatement对象,这么消耗我们很大的内存空间。
如果用户同时点注册按钮那么服务器首先执行打开数据库连接Connection多个用户注册就会打开多个Connection那么并且同时添加到数据库,服务器就会在执行添加的时候就会发生异常。分不清楚用户注册的信息。
举个例子:
package dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class BaseDao {private String className = "com.microsoft.sqlserver.jdbc.SQLServerDriver";private String url = "jdbc:sqlserver://localhost:1433;databasename=SQLTMP";private String user = "sa";private String pwd = "sa";private static Connection conn = null;private BaseDao(){try {Class.forName(className);conn = DriverManager.getConnection(url,user,pwd);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}public static Connection getConn(){if(conn != null){return conn;}else{new BaseDao();return conn;}} }
context.xml<Resource name="news"auth="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="1000"username="sa"password="sa"driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"url="jdbc:sqlserver://localhost:1433;DatabaseName=NewsManagerSystem"/> Web.xml <resource-ref><description>news DataSource</description><res-ref-name>news</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref> package com.news.dao; import java.sql.*;import javax.naming.*; import javax.sql.DataSource;public class BaseDao {/*** 创建连接池* */public Connection getConn(){Connection conn = null;try {Context ctx = new InitialContext();DataSource ds = (DataSource)ctx.lookup("java:comp/env/news");conn = ds.getConnection();} catch (NamingException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;} }
普及:
文章首链:http://bbs.ichunqiu.com/thread-8784-1-1.html
感谢您的阅读,如果您学到了,请点赞(码字不易)!
欢迎热心园友补充!
作者:0nise
浅析B/S架构数据库连接方式相关推荐
- ADO.net 中数据库连接方式
ADO.net 中数据库连接方式 在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式罗列一些,具体的每一项代表的意义可以参看MSDN. ADO.net 中数据库连接方式(微 ...
- .net 启动mysql数据库连接_[ASP.net教程]mysql数据库连接方式(.net)
[ASP.net教程]mysql数据库连接方式(.net) 0 2014-07-17 18:01:00 1.通过ado.net连接(数据库连接串中为中文貌似无法使用) 需要添加MySql.Data.d ...
- ASP数据库连接方式大全
ASP数据库连接方式大全http://www.jiejingwang.com 2003-3-10 捷径网 <% '#######以下是一个类文件,下面的注解是调用类的方法########## ...
- ASP.Net 中常用的数据库连接方式
ASP.Net 中常用的数据库连接方式 在ASP.Net中,连接数据库有以下四种方式: 1.System.Data.OleDb.OleDbConnection 2.System.Data.SqlCl ...
- 一个更好的可视化微服务架构的方式
本文讲的是一个更好的可视化微服务架构的方式[编者的话]如何快速地可视化一个微服务架构,本文作者有一个很酷的办法,赶紧来看看吧! [3 天烧脑式容器存储网络训练营 | 深圳站]本次培训以容器存储和网络为 ...
- Kettle之数据库连接方式
Kettle软件主要提供了4种数据库连接方式,分别是JDBC.ODBC.OCI.JNDI,其中 OCI 只适用于Oracle.本文重点对使用比较普遍的 JDBC 和 JNDI 连接方式进行探讨,后面会 ...
- 浅析 RISC-V 生态架构
RISC-V 生态架构浅析 前言 RISC-V最近越来越多的出现在科技新闻中,大量的公司加入到RISC-V研究和生产中.在越来越多的RISC-V研究热下,毋容置疑的是RISC-V的时代即将到来.让我们 ...
- 数据中台浅析——概念、架构以及未来
数据中台浅析 1. 引言 在当今的数字化时代,数据被誉为"新的石油",越来越多的企业和组织开始深度挖掘数据的价值.在这个过程中,数据中台逐渐成为了数据管理和分析的核心架构,让我们来 ...
- [JDBC] 获取数据库连接方式
方式一:将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接 此种方式的好处? 1.实现了数据与代码的分离.实现了解耦 2.如果需要修改配置文件信息,可以避免程序重新打包. ...
- WebForm(二)——控件和数据库连接方式
一.简单控件 1.Label(作用:显示文字) Web中: <asp:Label ID="Label1" runat="server" Text=&quo ...
最新文章
- python随机产生10个不同的两位数_python解决两位数加减法快速出题问题
- runtime运行时编程一些相关知识
- lambda表达式_在Java 7或更早版本中使用Java 8 Lambda表达式
- 跟我一起学docker(五)--仓库
- java linkedlist 用法_Java LinkedList addLast()用法及代码示例
- I begin to keep a daily
- 算法提高 合并石子【动态规划】
- 透析 | 卷积神经网络CNN究竟是怎样一步一步工作的?
- Python机器学习:KNN算法04f分类准确度
- Linux中设置tab4个空格,linux下vim中tab设置为4个空格例子
- MEF董事、中国电信云计算中心主任赵慧玲:MEF第三类网络
- Python 基础 —— 文件
- 安装JDK和tomcat
- 邵阳市计算机学校2021,邵阳市计算机中等专业学校在2021年邵阳市中等职业学校班主任基本功比赛中荣获市一等奖...
- Thinkphp twig
- 渠道下沉 阿里争食社区经济最后一公里
- smith圆图重要性_(完整版)smith史密斯圆图(个人总结),推荐文档
- java: 找不到符号
- java中美元符号的作用_$美元符号在配置文件中的意义
- 月影无终的伤感日志最新推荐:搁浅的回忆,谁来承受
热门文章
- 19【推荐系统17】MMoE: 多任务学习
- numpy教程:随机数模块numpy.random
- lstm 做多分类loss完全不下降_使用Induction Network做Few-Shot Text分类
- python内置函数分类_注意 Python 内置函数并不是万能的!
- python虚拟环境搭建learning_log_vscode Python 虚拟环境搭建
- vrrp 的mac是怎么算出来的_宇宙总质量约10^55kg,与大家掰一掰是怎么算出来的
- Java 重载、重写(Override、Overload)
- Dart基础第1篇:Dart环境搭建、Dart开发工具
- 7-2 温度转换 (5 分)
- 7-9 一元多项式的乘法与加法运算 (20 分)