转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
在信息系统中使用Java访问SQLServer数据库         

在信息系统中使用Java访问SQLServer数据库

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3433 更新时间:2007/11/14 11:00:54

在信息系统中使用Java访问SQLServer数据库
曾青松 zengqingsong@sohu.com
QICQ:36951970 2004-2-3

    我们在做信息系统的时候,都要访问数据库,我最近接手一个项目,项目组决定使用Java编写,我负

责数据层的设计和编码,为了提高代码的重用性和提高项目的开发效率。我们开发了一个通用的数据库连

接和完成基本操作的类库,个人认为这个类在做MIS系统时还是又一定的价值,所以总结出来,介绍给大

家。

连接工厂,实现了DataSource接口
package skydev.modules.data;
import java.sql.*;
import javax.sql.DataSource;
import java.io.PrintWriter;
public class ConnectionFactory implements DataSource {
  private String userName;
  private String password;
  private String driverName;
  private String url;
  private java.sql.Connection connection;

  /**
   * 根据设置的连接参数创建一个新的连接实例
   * @return
   */
  private Connection getNewConnection() {
    try {
      this.connection.close(); //试图关闭连接
    }
    finally {
      this.connection = null; //释放连接
      try {
        Class.forName(this.driverName); //加载驱动程序
        //DriverManager.registerDriver(driver);
        try {
          this.connection = DriverManager.getConnection(this.url, this.userName,
              this.password);
        }
        catch (SQLException e) {
          throw e;
        }
      }
      finally {
        return this.connection; //返回新建立的连接
      }
    }
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public String getDriverName() {
    return driverName;
  }

  public void setDriverName(String driverName) {
    this.driverName = driverName;
  }

  public String getUrl() {
    return url;
  }

  public void setUrl(String url) {
    this.url = url;
  }

  public java.sql.Connection getConnection() {
    if (connection != null) {
      try {
        if (connection.isClosed()) {
          connection = null;
          getNewConnection();
        }
      }
      catch (SQLException ex) {
      }
    }
    if (connection == null) { //没有设置连接则创建一个连接
      getNewConnection();
    }
    return connection;
  }

  public Connection getConnection(String userName, String password) throws
      SQLException {
    this.setUserName(userName);
    this.setPassword(password);
    return getConnection();
  }

  public PrintWriter getLogWriter() {
    return null;
  }

  public void setLogWriter(PrintWriter printWriter) {
  }

  public void setLoginTimeout(int int0) {
  }

  public int getLoginTimeout() {
    return 0;
  }
}

实现连接SQLServer的连接工厂,这里因为我们的项目使用SQLServer2000所以只实现了

SqlServerConnectionFactory。
package skydev.modules.data;
public final class SqlServerConnectionFactory extends ConnectionFactory {
  private final String dbDriver ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
  private String host;//主机
  private int port;//端口
  private String databaseName;//Sql数据库名称

  public SqlServerConnectionFactory() {
    super.setDriverName(dbDriver);
  }

  /**
   *
   * @param host 数据库所在的主机名:如"localhost"
   * @param port SQL服务器运行的端口号,如果使用缺省值 1433,传入一个负数即可
   * @param databaseName 数据库名称
   * @param userName 用户名
   * @param password 口令
   */
  public SqlServerConnectionFactory(String host,
                                    int port,
                                    String databaseName,
                                    String userName,
                                    String password) {
    this.setHost(host);
    this.setPort(port);
    this.setDatabaseName(databaseName);
    this.setUserName(userName);
    this.setPassword(password);
    init();
  }

  private void init() {
    super.setDriverName(dbDriver);
    super.setUrl("jdbc:microsoft:sqlserver://" + host.trim() + ":" +
                 new Integer(port).toString() + ";DatabaseName=" +
                 databaseName.trim());
    //super.setUrl("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo");
  }

  public void setHost(String host) {
    //处理主机名称
    if ( (host == null) || (host.equals("")) || (host.equals(".")) ||
        (host.equals("local"))) {
      host = "localhost";
    }
    int index = host.indexOf("//", 0);
    if (index == 0) {
      host = host.substring(2); //去掉前面的"//"
    }
    index = host.indexOf("//", 0);
    if (index >= 0) {
      try {
        throw new Exception("SQL Server主机名参数错误!");
      }
      catch (Exception ex) {
      }
    }
    this.host = host;
  }

  public void setPort(int port) {
    /**
     * 缺省端口1433
  &n

[1] [2] [3]  下一页


[电脑应用]用C#动态创建Access数据库  [Web开发]asp 在线备份与恢复sqlserver数据库代码详解
[电脑应用]教你如何远程管理MSSQL数据库  [其他]手工升级ACCESS到SQLSERVER方法详解
[其他]关于数据库优化查询计划的方法总结  [电脑应用]Linux数据库大比拚
[Web开发]asp+sqlserver 分页方法(不用存储过程)  [JAVA开发]Java连接各种数据库的实例
[聊天工具]QQ IP数据库Build 0825 纯真版__天极Yesky  [系统软件]利用crontab系统每天定时备份MySQL数据库
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台