hibernate C3P0数据源 连接Sql2005
c3p0 连接池 sql 参数
c3p0 是一个开源的JDBC 连接池库,用于提高数据库连接的性能和可靠性。
在使用c3p0 连接池时,可以通过在配置文件中设置SQL 参数来优化连接池的行为。
以下是一些常用的c3p0 连接池SQL 参数:testConnectionOnCheckin:设置为true 时,每次连接返回到连接池时都会执行一个测试查询来验证连接的有效性。
这有助于检测并排除不活跃或无效的连接。
testConnectionOnCheckout:设置为true 时,每次从连接池中获取连接时都会执行一个测试查询来验证连接的有效性。
这确保了从连接池中获取的连接都是可用的。
preferredTestQuery:用于指定测试查询的SQL 语句。
该查询应该是一个简单的、执行时间短的查询,用于验证连接是否正常工作。
例如,对于MySQL 数据库,可以使用"SELECT 1" 作为测试查询。
maxIdleTime:指定连接在返回到连接池后的最大空闲时间(以秒为单位)。
超过此时间的连接将被关闭并从连接池中移除。
这有助于释放资源并防止过多的空闲连接占用数据库资源。
maxConnectionAge:指定连接的最大生存时间(以秒为单位)。
超过此时间的连接将被关闭并从连接池中移除,无论它们是否处于空闲状态。
这有助于确保连接的稳定性和性能。
minPoolSize 和maxPoolSize:分别指定连接池中的最小和最大连接数。
这些参数用于控制连接池的大小,以平衡资源使用和性能需求。
这些参数可以通过c3p0 的配置文件进行设置,例如c3p0-config.xml 或c3p0.properties 文件。
具体的配置方式可能会因使用的编程语言和框架而有所不同,因此建议查阅c3p0 的官方文档或相关教程以获取更详细的指导。
hibernate sql拼接原理
Hibernate SQL拼接原理1. 什么是HibernateHibernate是一个开源的Java持久化框架,它提供了一个对象关系映射(Object-Relational Mapping,ORM)的解决方案,用于将Java对象与关系数据库进行映射。
通过Hibernate,我们可以使用面向对象的方式来操作数据库,而不需要直接编写SQL语句。
Hibernate采用了一种称为“延迟加载”的机制,它会在需要访问数据时才去执行SQL查询。
这种机制可以提高性能,并且使得开发者可以将更多的精力放在业务逻辑上。
2. Hibernate SQL拼接原理在使用Hibernate时,我们通常使用HQL(Hibernate Query Language)或者Criteria API来查询数据。
这些查询语言会被转换成对应的SQL语句,并由Hibernate执行。
2.1 HQL和SQLHQL是一种面向对象的查询语言,它类似于SQL但具有更高级的特性。
例如,HQL支持继承、多态、关联等概念,并且可以直接操作Java对象而不需要关心底层数据库表结构。
当我们使用HQL进行查询时,Hibernate会将HQL语句转换成对应的SQL语句,并通过JDBC驱动执行SQL查询。
这个过程包括两个阶段:解析和执行。
2.2 解析阶段在解析阶段,Hibernate会对HQL语句进行语法分析,并根据查询条件生成对应的SQL查询。
这个过程包括以下几个步骤:2.2.1 解析HQL语句首先,Hibernate会将HQL语句解析成一个抽象的查询树(Query Tree)。
这个查询树表示了HQL语句的结构和含义。
例如,对于以下的HQL语句:String hql = "from Employee e where = :deptName";Hibernate会解析成如下的查询树:SELECTeFROMEmployee eWHERE = :deptName2.2.2 解析实体和属性接下来,Hibernate会解析查询树中的实体和属性,并将它们映射到数据库表和列。
C#连接数据库SQL(2005)
C#连接数据库SQL(2005)⾸先来总结⼀下进⾏数据库编程的全过程,这⾥⽤的是SQL SERVER(1) 建⽴SqlConnection对象以连接数据库SqlConnection mysqlconnection=new SqlConnection("Server=localhost; database=yourdatabase;uid=sa;pwd=sa"); (2) 建⽴SqlCommand对象SqlCommand mysqlcommand=mysqlconnection.CreateCommand();(3) 设置SqlCommand对象的CommandText属性mandText="SELECT * FROM youydatabasetablename";(4) 打开SqlConnection对象mysqlconnection.open();(5) 运⾏SELECT语句SqlDataReader mysqldatareader=mysqlcommand.ExecuteReader();本⼈初学,此处疑惑,还望⾼⼿解答:此处没有SqlDataReader mysqldatareader=new SqlDataReader();⽽是直接执⾏,可以吗?如果没有new创建对象,后⾯的(8)mysqldatareader.Close(); 需要关闭吗?谢谢⾼⼈解答(6) ⽤SqlDataReader对象读⾏mysqldatareader.Read();(7) 显⽰SqlDataReader对象中的数值yourtextbox.Text=mysqldatareader["ID"].ToString(); //ID是你数据库中的⼀项列名(8) 关闭SqlDataReader对象mysqldatareader.Close();本⼈初学,此处疑惑,还望⾼⼿解答:需要关闭mysqlcommand吗即mysqlcommand.Close() 还是因为调⽤了CreateCommand()⽅法⽽不需要关闭吗?(9) 关闭SqlConnection对象mysqlconnection.Close();下⾯把过程呈现出来.1、在我的程序中⽤的是SQL,所以在程序头前加上using System.Data.SqlClient;2、在Form1中加⼊应有的控件,⽤于显⽰数据.3、申请变量static private int m = 1; //显⽰每条记录static private int k; //得到记录条数SqlCommand mysqlcommand;SqlConnection mysqlconnection;4、连接数据库,注意这⾥的连接字符串,⽤的是安全类型.try{mysqlconnection = new SqlConnection("server=localhost;Integrated Security=True;Database=myfriends");mysqlcommand = mysqlconnection.CreateCommand();//得到记录条数mandText = "SELECT COUNT(*) FROM Friends";mysqlconnection.Open();k = (int)mysqlcommand.ExecuteScalar();GetData(1);}catch (SqlException ex){MessageBox.Show("A SqlException was thrown,Number = " +ex.Number + //错误号ex.Message + //错误描述字符串ex.StackTrace); //抛出异常的类名和⽅法名字符串}5、如果数据库中有多条记录就要逐条显⽰在逐条显⽰的按钮事件中:m += 1; //下⼀条索引值if (m > k){MessageBox.Show("最后⼀条!将显⽰第⼀条记录!", "信息提⽰");m = 1;}this.hisname.Text = ""; //要显⽰下条,当然先清空this.hissex.Text = "";this.hisadress.Text = "";this.hisbirthday.Text = "";GetData(m); //显⽰下第数据6、在显⽰数据中⽤到显⽰下⼀条函数;private void GetData(int i){mandText = "SELECT ID,Name,Sex,"+ "birthday,address FROM Friends WHERE ID="+i; SqlDataReader mysqldatareader = mysqlcommand.ExecuteReader();mysqldatareader.Read();this.hisname.Text = mysqldatareader["Name"].ToString();this.hissex.Text = mysqldatareader["Sex"].ToString();this.hisadress.Text = mysqldatareader["Address"].ToString();this.hisbirthday.Text = mysqldatareader["Birthday"].ToString();mysqldatareader.Close();}。
C_与Sqlserver2005数据库的连接方法
一. 数据库连接字符串文章由 网提供典型的数据库连接字符串包括:集成验证和混合验证两种模式 集成验证连接字符:Data Source=locolhost; Initial Catalog=数据库名称; Integrated Security=True 混合验证模式字符:Server=localhost;Initial Catalog=数据库名称; Persist Security Info=False; User ID=****; Password=****; 注:1.这里的Data Source 或Server 表示数据源所在的计算机名称或IP 地址,可以互换。
2.Initial Catalog 表示连接的数据库名称,可写为database 3.Integrated Security 表示是否要为集成身份验证4.如果使用的是混合验证,需要提供用户名User ID 和密码Password 字段。
二. 类和对象如下图为 中的基本类,注意不是一个继承表,而是关系表·提供者对象:专用于每一种类型的数据源;专用于提供者的对象完成数据源中实际的读取和写入工作。
·用户对象:将数据读入到内存中后用来访问和操作的数据的对象。
提供者对象需要一个活动的连接,可以使用它们预先读取数据,然后根据需要通过用户对象使用内存中的数据,也可以使用提供者对象更新数据源中的数据,并将改动写回到数据源中。
用户对象以非连接方式使用,甚至在数据库连接关闭之后,也可使用内存中的数据。
1.提供者对象在每一个.NET数据提供者中定义的对象,其名前带有特定提供者的名称。
因此,用于OLE DB 提供者的连接对象就是OleDbConnection;用于提供者的类是SqlConnection。
使用时要分别使用using System.Datat.OleDb;和using System.Data.SqlClient;(1)连接对象连接对象是我们使用的第一个对象,用于任何其它对象之前。
C3P0详解
C3P0详解定义:C3P0是⼀个开源的JDBC连接池,⽬前使⽤它的开源项⽬有Hibernate,Spring等。
数据库连接池的基本思想就是为数据库连接建⽴⼀个“缓冲池”。
预先在缓冲池中放⼊⼀定数量的连接,当需要建⽴数据库连接时,只需从“缓冲池”中取出⼀个,使⽤完毕之后再放回去。
我们可以通过设定连接池最⼤连接数来防⽌系统⽆尽的与数据库连接。
获取⼀个连接,系统要在背后做很多消耗资源的事情,⼤多时候,创建连接的时间⽐执⾏sql语句的时间还要长。
⽤户每次请求都需要向数据库获得链接,⽽数据库创建连接通常需要消耗相对较⼤的资源,创建时间也较长。
使⽤⽅法:1.导⼊jar包:c3p0和mysql2.配置xml⽂件c3p0通过set⽅法进⾏配置c3p0通过c3p0-config.xml⽂件进⾏配置关于通过配置⽂件进⾏配置的话,这边需要把xml⽂件⽅法同src⽂件夹下,c3p0会扫描⽂件进⾏相关的配置。
在Maven依赖中要加⼊c3p0和mysql-connector-java依赖,版本号⼀定要写。
废话不多说,下⾯是c3p0-config.xml⽂件的代码是不是代码简洁了很多,所以在我们通常使⽤配置⽂件来创建数据库的连接池。
c3p0常⽤配置参数介绍在前⾯的c3p0的相关配置中,我们看到了c3p0的配置参数,这⾥我们介绍⼏个常⽤的c3p0的配置参数最基础的参数配置:driverClass : 数据库驱动(⽐如mysql,或者oracle数据库的驱动)jdbcUrl: jdbc数据库连接地址(例如jdbc:mysql://localhost:3306/zhanghanlun)user:数据库⽤户名password:和数据库⽤户名对应的数据库密码基础的参数配置在这⼏个参数中,idleConnectionTestPeriod、testConnectionOnCheckout和testConnectuonOnCheckin控制什么时候连接将被校验检测。
SQL2005无法连接数据库解决方法
1. 数据库引擎没有启动。
有两种启动方式:(1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动",并确保"启动类型"为自动,不要为手动,否则下次开机时又要手动启动;(2)可打开:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager,选中SQL Server 2005服务中SQL Server(MSSQLSERVER) ,并单击工具栏中的"启动服务"按钮把服务状态改为启动;使用上面两种方式时,有时候在启动的时候可能会出现错误,不能启动,这时就要查看"SQL Server 2005配置管理器"中的SQL Server 2005网络配置->MSSQLSERVER协议中的VIA是否已启用,如果已启用,则把它禁止.然后再执行上述一种方式操作就可以了.2. 是否已经允许远程连接。
这个部分可以简单的分为4个方面,分别是在SQL Server上启用远程连接、启用SQL Server 浏览服务、在Windows 防火墙中为SQL Server 2005 创建例外和在Windows 防火墙中为“SQLBrowser”创建例外。
下面是几个具体的操作方式,摘自MSDN,个人觉得文章的黑体部分应当特别的一起我们的注意。
在SQLServer 实例上启用远程连接1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”3.然后单击展开“数据库引擎”,选中“远程连接”,在右边选中“本地连接和远程连接”,再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。
SQL Server 2005 开启数据库远程连接的方法
SQL Server 2005 开启数据库远程连接的方法这篇文章主要介绍了SQL Server 2005默认是不允许远程连接的,要想通过远程连接实现MSSQL,数据库备份,需要做如下设置,需要的朋友可以参考下SQL Server 2005默认是不允许远程连接的,要想通过远程连接实现MSSQL,数据库备份,需要做如下设置:步骤/方法1.打开SQL Server Configuration Manager,使用windows身份登录2.登录后,右键选择“属性”。
左侧选择“安全性”,选中右侧的“SQLServer,和 Windows 身份验证模式”以启用混合登录模式3.选择“连接”,勾选“允许远程连接此服务器”,然后点“确定”4.展开“安全性”,“录名”,“新建登陆名”,以mylink为例5.左侧选择“常规”,右侧选择“SQL Server 身份验证”,并设置密码,同时在下面“默认数据库”上勾选你要备份的数据库。
6.左侧选择“用户映射”,在右面选择要映射的数据库,并在前面打勾7.左侧选择“状态”,在右面栏中选中"授予"、“启用”,这两项一般是默认的,但如果默认的不是此两项必须改过来,不然是连不上的!点击‘确定'8.选中你要备份的数据库,这里以my_dbfen_0为例,右键选择“属性”9.选择“权限”,选中数据库用户mylink,给mylink用户授予select权限。
(要正常成功的话,这一步一定要设置哟!)10.至此SSMS已设置完毕,先退出,再用mylink登录,成功即表示mylink帐户已经启用11.打开sql server配置管理器。
在左则选择sql server网络配置节点下的sqlexpress的协议,在右侧的TCP/IP默认是“否”双击打开设置面板将其修改为“是”这里可以选择“IP 地址”选项卡,设置TCP的端口,默认的为“1433”如果您的数据库地址为localhost,您可以在这里修改数据库IP。
JDBC连接SQL_Server_2005的方法
JDBC连接SQL Server 2005的方法(1)关闭防火墙。
(2)配置TCP端口:开始->所有程序->Microsoft SQL Server 2005->配置工具->SQL Server配置管理器->SQL Server 2005 网络配置->MSSQLSERVER协议;启用“TCP/IP”;双击“TCP/IP”->“IP 地址”->“IPAll”->“TCP 端口”项添加默认的“1433”。
(3)外围应用配置:Microsoft SQL Server 2005->配置工具->SQL Server外围应用配置器->服务和连接的外围应用配置器-> ①选SQLEXPRESS->Database Engine->远程连接->本地连接和远程连接->同时使用TCP/IP和named pipes;②选SQL Server Browser->服务->启动类型改为“自动”->应用->启动->确定。
(4) 修改默认的登录验证模式(由于在安装过程中是默认按“Windows 身份验证模式”方式安装,所以sa登录是被禁用的,即使将身份验证模式更改为“SQL Server 和 Windows 身份验证模式”,sa登录仍处于禁用状态,所以需要启用sa登录帐户):①在SQL Server Management Studio 的对象资源管理器中,安全性->登录名->右击“sa”->属性->常规->将登录名sa的密码和确认密码设为强密码->状态->登录->启用->确定;②在SQL Server Management Studio 的对象资源管理器中,右击服务器->属性->安全性->服务器身份验证->选择“SQL Server和Windows身份验证模式”->确定->确定。
Hibernate 中配置C3P0连接池
Hibernate 中配置C3P0连接池Hibernate自带的连接池算法相当不成熟。
它只是为了让你快些上手,并不适合用于产品系统或性能测试中。
出于最佳性能和稳定性考虑你应该使用第三方的连接池。
只需要用特定连接池的设置替换hibernate.connection.pool_size即可。
这将关闭Hibernate自带的连接池。
例如,你可能会想用C3P0.C3P0是一个随Hibernate一同分发的开源的JDBC连接池,它位于lib目录下。
如果你设置了hibernate.c3p0.*相关的属性,Hibernate将使用C3P0ConnectionProvider来缓存JDBC连接。
如果你更原意使用Proxool,请参考发行包中的hibernate.properties并到Hibernate网站获取更多的信息。
这是一个使用C3P0的hibernate.properties样例文件(来自Hibernate包中etc目录下):############################## C3P0 Connection Pool###############################hibernate.c3p0.max_size 2#hibernate.c3p0.min_size 2#hibernate.c3p0.timeout 5000#hibernate.c3p0.max_statem ents 100#hibernate.c3p0.idle_test_period 3000#hibernate.c3p0.acquire_increment 2#hibernate.c3p0.validate false在hibernate.cfg.xml文件里面加入如下的配置:<!-- 最大连接数--><property name="hibernate.c3p0.max_size">20</property><!-- 最小连接数--><property name="hibernate.c3p0.min_size">5</property><!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒--><property name="hibernate.c3p0.timeout">120</property><!-- 最大的PreparedStatement的数量--><property name="hibernate.c3p0.max_statements">100</property><!-- 每隔120秒检查连接池里的空闲连接,单位是秒--><property name="hibernate.c3p0.idle_test_period">120</property><!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数--><property name="hibernate.c3p0.acquire_increment">2</property><!-- 每次都验证连接是否可用--><property name="hibernate.c3p0.validate">true</property>完整示例如下(hibernate.properties):hibernate.connection.driver_class =org.postgresql.Driverhibernate.connection.url= jdbc:postgresql://localhost/mydatabaseername = myuserhibernate.connection.password = secrethibernate.c3p0.min_size=5hibernate.c3p0.max_size=20hibernate.c3p0.timeout=1800hibernate.c3p0.max_statements=50hibernate.dialect =org.hibernate.dialect.PostgreSQLDialect。
SQL server 2005数据库的登录连接配置
依次打开开始→所有程序→Microsoft SQL Server 2005→配置工具→SQL Server 配置管理器
会出现以下界面
右键启用TCP/IP 然后右键属性
在IP 地址选项卡中IPALL 选项中TCP 动态端口输入0 TCP 端口输入1433
然后右键启用Named Pipes
依次打开开始→所有程序→Microsoft SQL Server 2005→ SQL Server外围应用配置器
二依次打开开始→所有程序→Microsoft SQL Server 2005→SQL Server Management Studio Express
选择连接
如下图操作会出现属性界面
在属性页面里1选择安全性2在右边选择SQL Server 和Windows 身份验证模式3点击确定
配置SA账号展开安全性–> 登录名–> 双击sa
配置sa 密码输入123
选择状态右边登录-> 启用点击确定
到现在SQL2005 就配置好了
现在开始导入SQL 数据库1在数据库文件夹上有键附加如下图
添加你的SQ; 数据库
选择数据库文件点击确定
上述步骤完成后重启数据库。
c3p0数据库连接池的使用详解
c3p0数据库连接池的使⽤详解⾸先,什么是c3p0?下⾯是百度百科的解释:C3P0是⼀个开源的JDBC连接池,它实现了数据源和JNDI绑定,⽀持JDBC3规范和JDBC2的标准扩展。
⽬前使⽤它的开源项⽬有Hibernate,Spring 使⽤连接池和我们平时写的JDBC代码相⽐较有什么优点呢?资源重⽤:由于数据库连接得以重⽤,避免了频繁创建,释放连接引起的⼤量性能开销。
在减少系统消耗的基础上,另⼀⽅⾯也增加了系统运⾏环境的平稳性。
更快的系统反应速度:数据库连接池在初始化过程中,往往已经创建了若⼲数据库连接置于连接池中备⽤。
此时连接的初始化⼯作均已完成。
对于业务请求处理⽽⾔,直接利⽤现有可⽤连接,避免了数据库连接初始化和释放过程的时间开销,从⽽减少了系统的响应时间。
新的资源分配⼿段:对于多应⽤共享同⼀数据库的系统⽽⾔,可在应⽤层通过数据库连接池的配置,实现某⼀应⽤最⼤可⽤数据库连接数的限制,避免某⼀应⽤独占所有的数据库资源。
统⼀的连接管理,避免数据库连接泄露:在较为完善的数据库连接池实现中,可根据预先的占⽤超时设定,强制回收被占⽤连接,从⽽避免了常规数据库连接操作中可能出现的资源泄露。
如何在⾃⼰的项⽬中使⽤c3p0呢?1. 导jar包:2. 两种⽅式可以建⽴c3p0连接,第⼀种⽅式是代码⽅式,Demo如下:package com.wang.utils;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import boPooledDataSource;public class JDBCutils {private static Connection conn;private static ComboPooledDataSource ds = new ComboPooledDataSource();public static Connection getConnection() {try {ds.setDriverClass("com.mysql.jdbc.Driver");ds.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=2 56&rewriteBatchedStatements=true");ds.setUser("root");ds.setPassword("123");conn = ds.getConnection();} catch (SQLException e) {e.printStackTrace();} catch (PropertyVetoException e) {e.printStackTrace();}return conn;}第⼆种是使⽤读取配置⽂件的⽅式,要求是,配置⽂件必须命名为c3p0-config.xml,并且放在src⽬录下,配置⽂件如下:<?xml version="1.0" encoding="UTF-8" ?><c3p0-config><default-config><property name="jdbcUrl"><![CDATA[jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8&useServerPrepStmts=true&prepStmtCacheSqlLimit=256&cachePrepStmts=true&prepStmtCacheSize=2 56&rewriteBatchedStatements=true]]></property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="user">root</property><property name="password">123</property> <!--当连接池中的连接耗尽的时候c3p0⼀次同时获取的连接数。
VS2005 SQL2005 数据库连接方法
对于的新手来说,整个数据库连接不太容易,根据连接过程中的问题总结如下。
1.开启SQL2005远程连接功能,开启办法如下:配置工具->SQL Server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine节点,先择“远程连接”,接下建议选择“同时使用TCP/IP和named pipes”,确定后重启数据库服务就可以了。
2.登陆设置改为:SQL Server 和 Windows 身份验证模式,具体设置如下:SQL Server Management Studio管理器->Windows 身份验证连接服务器->对象资源管理器中选择你的数据服务器->右键->属性->安全性->SQL Server 和 Windows 身份验证模式选中。
3.设置一个SQL Server方式的用户名和密码:具体设置如下:(1)SQL Server Management Studio管理器->Windows 身份验证连接服务器->对象资源管理器中选择你的数据服务器->展开服务器上的“安全性”->登陆名->在sa帐号上点右键->“选择页”选择常规->更改sa登陆帐号的密码。
这样就设置了一个用户名为sa,密码为:sa123456的用户。
(2)“选择页”选择状态->登陆修改为启用。
4.数据库连接字符串:数据库连接字符串有好多种:那种正确,这跟数据库版本有关系,如果是SQL Server 2005 Express版本,则必须要有“\SQLEXPRESS”。
而且如果这个字符串是定义为一个变量的时候,VS2005还会在“\”的下面加个红色的波浪线提示你“\S是无法识别的转义序列”,因此如果字符串是定义为一个变量的时候应该写成Server=.\\SQLEXPRESS。
5.注册SQL Server数据库:在路径“C:\Windows\\Framework\v2.0.50727”下运行“ASPNET_REGSQL”指令,就会出现 SQL Server Setup Wizard向导,连续按下两个下一步后就会出现SQL Server注册界面,填入你要注册的数据库参数就注册好了。
浅谈连接SQL Server 2005数据库的方法
浅谈连接SQL Server 2005数据库的方法[摘要]本文主要介绍在数据库开发工具PowerBuilder环境下,连接数据库SQL Server 2005过程中使用专用接口、ODBC和配置文件的不同方法,同时对不同连接方式的优缺点进行详细的比较。
[关键词] 数据库管理系统; 接口; SQL Server 2005; PowerBuilder 11.0一、引言SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
SQL Server 2005 强大的数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。
此外, SQL Server 2005 结合了分析、报表、集成和通知功能,使企业可以构建和部署经济有效的BI 解决方案,帮助企业团队通过记分卡、Dashboard、Web Services 和移动设备将数据应用推向业务的各个领域。
而作为数据库管理系统强有力的开发工具,Power Builder在通信、邮政、金融、医疗卫生、机械制造等行业的应用中,会经常选择SQL Server 作为数据库管理系统。
因此,使用PowerBuilder与SQL Server数据库连接尤为重要。
二、系统概述现以开发商业化的酒店管理系统为例,使用PowerBuilder 11.0为前台开发工具,SQL Server 2005为系统后台数据库管理系统,介绍使用不同的方式在PowerBuilder 环境中与SQL Server 2005连接的具体实现过程。
具体接口图如图1所示。
三、连接实现与设计1. 通过专用接口连接通过Microsoft SQL Server的企业管理器,启动SQL Server,或者在“开始”菜单中“运行”net start Mssqlserver命令也可以启动SQL Server。
启动PowerBuilder环境,打开PowerBuilder的数据库画板,选择“MSS Microsoft SQL Server”,单击鼠标右键,新建“New Profiles”(如图2所示),按图3所示范内容进行详细配置。
sql2005连接配置详细图解
这文章本来是写在我自己的blog上的,不过最近打算搬到cnblog上,所以就把一些文章搬过来先^_^自己琢磨了很久,相信还有人不知道,不如写在blog上,对自己或者别人都有好处。
首先安装的sql必须有2000里所谓的企业管理器,标准版等等的都有就不多说了,而安装vs2005或者vs2008附带的sql2005 express版本却没有带,所以安装express版本的人必须先下载,地址:/download/0/f/9/0f9d8ac6-d9a2-4233-ae78-4f957f0361e8/SQLS erver2005_SSMSEE.msi共44.7M装完后(在以下这些步骤貌似都要重启服务器,不理他,到最后一步再重启好了):1、点击开始菜单sql2005配置工具里的外围应用服务器,再点击服务和连接的外围应用配置器,如图在远程连接里选择同时使用TCP/IP和命名管道,然后应用确定。
2、配置端口1433,貌似有的装完就配好了,不过最好检查下点击开始菜单sql2005配置工具里的sql2005配置管理器选择网络配置那项,应该是都已经启用的在TCP/IP上右键-属性,选择IP地址项,惭愧,不知道该把1433填哪里,就把IP1和IPALL的端口都填上了14333、打开刚装的sql server management stdio,选择用windows身份验证进入在对象资源管理器中的实例右键-属性,切换到安全性,把服务器身份验证选为混合模式,不然sa账号不然用。
确定后,在服务器实例的安全性下找到sa,点右键-属性讲常规里的密码改为自己的密码,点击状态页,将是否连接到数据库引擎改为授予在以上做完后重启sql2005的服务器,右键服务器实例就有重启选项了在装有sql2000 和sql2005的机子上,2005会把2000的实例覆盖,所以需要连2000的话就要另外建一个实例了。
麻烦,还是不要装2个的好。
Hibernate数据库连接池C3P0配置详解
1 数据库连接池描述数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。
对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。
数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。
这项技术能明显提高对数据库操作的性能。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。
无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。
连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:●最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;●最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
●如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。
不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
2 hibernate中的数据库连接池Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。
在配置连接池时需要注意的有三点:●Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在缺陷。
详解C3P0(数据库连接池)
4.c3p0-config.xml参 数 清 单
<c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement">3</property> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --> <property name="acquireRetryAttempts">30</property> <!--两次连接中间隔时间,单位毫秒。Default: 1000 --> <property name="acquireRetryDelay">1000</property> <!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<!--每60秒检查所有连接池中的空闲连接。Default: 0 --> <property name="idleConnectionTestPeriod">60</property>
<!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize">3</property>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hibernate C3P0数据源连接Sql2005,2000数据库(转)<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"><!-- 定义数据源Bean,使用C3P0数据源实现 --><bean id="dataSource"class="boPooledDataSource"destroy-method="close"><!-- 指定连接数据库的驱动 --><property name="driverClass"value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /><!-- 指定连接数据库的URL --><property name="jdbcUrl"value="jdbc:sqlserver://localhost:1433; DatabaseName=Northwind" /> <!-- 指定连接数据库的用户名 --><property name="user" value="root" /><!-- 指定连接数据库的密码 --><property name="password" value="root" /><!-- 指定连接数据库连接池的最大连接数 --><property name="maxPoolSize" value="40" /><!-- 指定连接数据库连接池的最小连接数 --><property name="minPoolSize" value="10" /><!-- 指定连接数据库连接池的初始化连接数 --><property name="initialPoolSize" value="10" /><!-- 指定连接数据库连接池的连接的最大空闲时间 --><property name="maxIdleTime" value="3" /></bean><!--定义了Hibernate的SessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /><!-- 配置Hibernate的参数 --><property name="hibernateProperties"><props><!-- 指定数据库的方言 --><prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop><prop key="show_sql">false</prop><prop key="hibernate.hbm2ddl.auto">update</prop><!-- JDBC执行批量更新语句的大小清除缓存(定期清除缓存,减小压力 --> <prop key="hibernate.jdbc.batch_size">30</prop></props></property><property name="mappingResources"><!-- 映射的文件 --><list><value>XXXX.hbm.xml</value></list></property></bean><!-- 配置事务管理器Bean,因为使用Hibernate持久化技术,故使用HibernateTranscationManager 事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager "><!--为事务管理器注入SessionFactory 引用 --><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 配置事务拦截器Bean --><bean id="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterce ptor"><!-- 事务拦截器bean需要依赖注入一个事务管理器 --><property name="transactionManager" ref="transactionManager" /><property name="transactionAttributes"><!-- 下面定义事务传播属性--><props><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><!-- 定义BeanNameAutoProxyCreator 后处理器 ,BeanNameAutoProxyCreator 为名字匹配字符串或者通配符的bean自动创建AOP代理。
--><beanclass="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyC reator"><!-- 指定对满足哪些bean name的bean自动生成业务代理 --><property name="beanNames"><!-- 下面是所有需要自动创建事务代理的bean--><list><value>*Dao</value><value>*Imp</value></list><!-- 此处可增加其他需要自动创建事务代理的bean--></property><!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器--><property name="interceptorNames"><list><!-- 此处可增加其他新的Interceptor --><value>transactionInterceptor</value></list></property></bean><!-- 配置系统DAO组件 --><bean id="xxxxDao" class="org.boss.dao.XxxxDaoHibernate"><!-- 依赖注入DAO组件所必需的SessionFactory引用 --><property name="sessionFactory" ref="sessionFactory"></property> </bean><!-- 配置系统的业务逻辑组件 --><bean id="xxxxImp" class="org.boss.service. XxxxManagerImp"><property name="xxxxDao" ref="xxxxDao"></property></bean></beans>。