JFinal连接SQL Server 2008 R2数据库

时间:2022-08-04 00:56:47

首先本文参考了http://blog.csdn.net/stewen_001/article/details/19553173这篇博主的文章,然后结合自己的心得整理。感谢!

一、设置数据库配置

1、安装SQL Server 2008时,一定要记得设置SQL Server身份验证方式,采用混合登录模式。如果安装时只设置了windows身份验证方式,可以按下面博主的文章进行设置:http://blog.163.com/jackie_howe/blog/static/19949134720122261121214/

2、SQL Server安装完后,默认TCP/IP协议没有开启,所以以SQL Server身份验证方式登录不了。(登录名为:./数据库实例名称)这是打开SQL Server配置管理器开启协议。

(1)、开启协议

JFinal连接SQL Server 2008 R2数据库

(2)、配置协议

双击TCP/IP(右键→属性),在弹出的窗口中选择 “IP地址” 选项卡,将IP1和IP10的【IP地址】设为127.0.0.1,并将所有【IPx】的【已启用】设为是。接着,拖动下拉条到最下方,将 IPAll 中的【TCP端口】设成 【1433】,其余不变。

(3)、测试协议

重启计算机后,使用telnet命令测试1433端口是否打开。开始菜单 → 运行cmd → 输入:telnet 127.0.0.1 1433,(注意telnet与127之间有空格,1与1433之间有空格)。若提示“不能打开到主机的连接,在端口 1433: 连接失败”,则说明1433端口没有打开,需要重新进行以上配置。若连接成功,显示如下所示:

JFinal连接SQL Server 2008 R2数据库

二、环境变量CLASSPATH设置

1、下载Microsoft JDBC Driver 4.2 for SQL Server。下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=11774

(1)、版本说明:

Sqljdbc42.jar需要JRE8并支持JDBC4.2 API

受支持的数据库版本:SQL Server 2016、2014、2012、2008 R2、2008、2005、Azure SQL

(2)、下载所需压缩包:

JFinal连接SQL Server 2008 R2数据库

3)、解压文件,得到Sqljdbc42.jar。在C盘新建文件夹,命名为sqljdbc_4.2,将Sqljdbc42.jar复制进去。

(4)、右击 我的电脑 → 属性 → 高级系统设置(高级) → 环境变量,在系统变量中双击CLASSPATH变量(或选中CLASSPATH后 → 编辑),在最后面追加 “;C:\sqljdbc_4.2 \sqljdbc42.jar” (注意最前面有个 ; )若不存在CLASSPATH,就新建CLASSPATH变量,并且将其值设为“D:\sqljdbc4 \sqljdbc4.jar”。

完成以上4步,就完成了环境变量的设置了。

三、注意事项

1、我们需要将sqljdbc42.jar类库文件拷贝到D:\Program Files\Java\jdk1.7.0\jre\lib\ext目录下。
2、我们需要将sqljdbc42.jar类库文件拷贝到D:\Program Files\Java\jre7\lib\ext目录下 最好是,只要是jre文件夹,都复制一个sqljdbc42.jar到jre7\lib\ext里去!!
3、如果是使用Tomcat做服务器(我使用的是Tomcat7),那么我们需要将sqljdbc42.jar类库文件拷贝到C:\apache-tomcat-7.0.11\lib目录下。
4、如果是使用Tomcat做服务器,那么我们需要将sqljdbc42.jar类库文件拷贝到D:\apache-tomcat-7.0.11\webapps\项目路径\WEB-INF\lib目录下

PS:只需要拷贝一个jar包(Sqljdbc42.jar)。

四、测试

1、在Eclipse新建JFinal项目,我采用的是c3p0连接池管理。导入c3p0-0.9.5.1.jar和sqljdbc-42.jar,配置C3P0插件配置文件。

JFinal连接SQL Server 2008 R2数据库

2、config文件中配置插件

public static C3p0Plugin createC3p0Plugin() {
		return new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), 
							  PropKit.get("password").trim(),PropKit.get("driverClass"));
	}
	
	public void configPlugin(Plugins me) {
		//c3p0连接池插件
		C3p0Plugin C3p0Plugin = createC3p0Plugin();
		me.add(C3p0Plugin);
		//数据库操作插件
		ActiveRecordPlugin arp = new ActiveRecordPlugin(C3p0Plugin);
		me.add(arp);
		//设置方言(很重要,一定要设置)
		arp.setDialect(new AnsiSqlDialect());
		
		arp.addMapping("[lumosity].[account].[account]", "userId", Account.class);
		
		
		
	}


3、测试类

public class TestSql {

	public static void main(String[] args) {
		
		PropKit.use("c3p0config.properties");
		
		C3p0Plugin C3p0Plugin = new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), 
				  PropKit.get("password").trim(),PropKit.get("driverClass"));
		
		ActiveRecordPlugin arp = new ActiveRecordPlugin(C3p0Plugin);
		
		arp.setDialect(new AnsiSqlDialect());
		arp.addMapping("[lumosity].[account].[account]", "userId", Account.class);
		//非web环境下,需要手动调用相关插件的start()方法
		C3p0Plugin.start();
		arp.start();
		
		Account account = Account.dao.findById(1);
		System.out.println("userId = " + account.getLong("userId") + "\n"
 +"userName = " + account.getStr("userName")+ "\n"
 +"email = " + account.getStr("email"));
	}
}
4、测试结果

JFinal连接SQL Server 2008 R2数据库

成功查询到数据库的数据,大功告成~JFinal连接SQL Server 2008 R2数据库