设为首页 加入收藏

TOP

JAVA连接SQLServer基础,以及5分钟之内读+写20万条数据(40万条操作),遇到的问题(一)
2015-07-24 10:16:17 来源: 作者: 【 】 浏览:0
Tags:JAVA 连接 SQLServer 基础 以及 5分钟 之内 20万条数据 40万条 操作 遇到 问题

首先,最基本的连接方式:

?

	private String url = "jdbc:odbc:Driver={SQL Server};Server=DELL-PC;Database=MedicalData";
	private String user = "sa";
	private String password = "netlab";
	private Connection conn;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
conn = DriverManager.getConnection(url, user, password);
			PreparedStatement partnames=conn.prepareStatement(sql);
	        rs=partnames.executeQuery();
	    

Statement partnames=conn.createStatement();
	        partnames.executeUpdate(sql);

遇到问题:

?

?

[Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt

查了很多文章以后,感觉应该是由于短时间大量访问,导致没有释放资源,如rs,statement,conn等

?

这是查到了连接池 ,数据库连接池:查到了链接 http://bbs.csdn.net/topics/340245414 这篇帖子的四楼方法,如下:

在util包中新建两个文件,一个是DataSourceFactory.java,另一个是databaseresource.properties配置文件,还有几个jar包,commons-dbcp-1.2.1.jar,commons-pool-1.3.jar,msbase.jar,mssqlserver.jar,msutil.jar,这5个jar包自己去网上下载下来

DataSourceFactory.java的内容如下

?

package util;

import org.apache.commons.dbcp.*;
import java.sql.*;
import java.util.*;

public class DataSourceFactory {
	private static String PROPERTIES_FILE = "/util/databaseresource.properties";
	private static DataSourceFactory instance = null;
	private BasicDataSource ds1;
	
	private DataSourceFactory() {
		Properties prop = new Properties();
		try {
			prop.load(this.getClass().getResourceAsStream(PROPERTIES_FILE));
			ds1 = (BasicDataSource)BasicDataSourceFactory.createDataSource(prop);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	public static DataSourceFactory getInstance() {
		if(instance == null) {
			instance = new DataSourceFactory();
		}
		return instance;
	}
	
	public Connection getConnection() {
		Connection conn = null;
		try {
			conn = ds1.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return conn;
	}
}

databaseresource.properties中的内容如下:(去除//之后的注释)

driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=friend //friend为 数据库

username=sa //数据库连接用户名
password=null //数据库连接密码
defaultAutoCommit=true //是否自动提交事务
maxActive=10 //连接池最大连接数


弄好后在程序中用
Connection conn = DataSourceFactory.getInstance().getConnection();
就可以等到数据库连接了

?

于是有了我的代码:

如下:

?

package com.k.sqlsever;

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

import util.DataSourceFactory;



public class SQLSeverLink {
	
	private String url = "jdbc:odbc:Driver={SQL Server};Server=DELL-PC;Database=MedicalData";
	private String user = "sa";
	private String password = "netlab";
	private Connection conn;
	
	public void link()
	{
		try {
			
//			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
//		    conn = DriverManager.getConnection(url, user, password);
			conn = DataSourceFactory.getInstance().getConnection();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
	
	public void closeLink()
	{
		if(conn!=null)
			try {
				conn.close();
			} catch (SQLExc
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQLServer按时间间隔提取数据进行.. 下一篇sqlite学习笔记5:插入数据,查询..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python 数据分析与可 (2025-12-26 21:51:20)
·从零开始学Python之 (2025-12-26 21:51:17)
·超长干货:Python实 (2025-12-26 21:51:14)
·为什么 Java 社区至 (2025-12-26 21:19:10)
·Java多线程阻塞队列 (2025-12-26 21:19:07)