`
cq520
  • 浏览: 165514 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jdbc连接SQLServer数据库的注意事项及编程应用实例

阅读更多

首先,关于数据库的安装方法在本文中就不再累赘,详情请见我的上一篇博客。

http://cq520.iteye.com/admin/blogs/1982097

不过需要注意的是,由于装有Windows操作系统下的电脑都默认有SQL Server,所以大家可以打开自己的电脑看一下自己的电脑里面是哪个SQL Server 版本(在开始菜单中找到Microsoft SQL Server文件夹,后面的版本号就是本机的SQL Server 版本)。

不过系统自带的SQL Server可能并没有管理工具(SQL Server Management Studio,如本人的电脑),就可以在百度下载,要记得添加上自己的版本号哦,如SQL Server Management Studio 2005.

下面进入主题,如何使用JDBC连接SQL Server数据库(2005版本为例)

1. 关闭防火墙防火墙设置会导致你无法连接到本地的数据库,至少这是出于安全的考虑。

2. 配置TCP端口
    a. 开始->所有程序->Microsoft SQL Server 2005->配置工具->SQL Server配置管理器->SQL Server 2005 网络配置->MSSQLSERVER协议
    b. 启用“TCP/IP”(右键单击选择启动[http://www.colalife.com]
    c. 双击“TCP/IP”->“IP 地址”->“IPAll”->“TCP 端口项添加默认的“1433”端口

3. 外围应用配置Microsoft SQL Server 2005->配置工具->SQL Server外围应用配置器->服务和连接的外围应用配置器->
     ①SQLEXPRESS->Database Engine->远程连接->本地连接和远程连接->同时使用TCP/IPnamed pipes
     ②SQL Server Browser->服务->启动类型改为自动”->应用->启动->确定

4. 修改默认的登录验证模式(如果在安装过程中是默认按“Windows 身份验证模式方式安装,所以sa登录是被禁用的,即使将身份验证模式更改为“SQL Server 和 Windows 身份验证模式sa登录仍处于禁用状态,所以需要启用sa登录帐户):
    ①SQL Server Management Studio 的对象资源管理器中,安全性->登录名->右击“sa”->属性->

常规->将登录名sa的密码和确认密码设为强密码->状态->登录->启用->确定
    ②SQL Server Management Studio 的对象资源管理器中,右击服务器->属性->安全性->服务器身份验证->选择“SQL ServerWindows身份验证模式”->确定->确定

5. SQL Server Management Studio中新建一个数据库(例如“mytest”,如果测试程序带有数据库文件也可不用新建而直接附加到当前SQL Server数据库服务器);在SQL Server Management Studio 的对象资源管理器中右击服务器->重新启动->

6. 运行下载的JDBC文件“sqljdbc_1.2.2828.100_chs.exe”(已在附件中给大家配上)解压到“C:\Program Files”文件夹中;[http://www.colalife.com]

Classpath设置为包含sqljdbc.jar文件(也可加到系统环境变量中),建议从解压文件夹下找到sqljdbc.jar,将其复制到自己常用的Jar文件夹里,用的时候方便找到。

7. Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5 进行JDBC连接设置并测试
    1、打开Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5,新建Java Project”,项目名为Test
    2、选择“Window”→“Preferences”→“Java”→“Installed JREs”,选定已安装的 JRE,点击“Edit...”→“Add External JARs”,找到sqljdbc.jar并添加—>OK
    3"Window"->"Open Perspective"->"MyEclipse Database Explorer"->(左侧)"DB Browser"右键“New”->填写链接属性Driver nameURL为:jdbc:sqlserver:// localhost:1433;databaseName=mytestUser namesaPassword:密码。然后在Driver JARs Add JARs 添加sqljdbc.jar,点及Test

Driver测试,勾上Save Password保存密码,点击完成结束——即完成了在DB Browser中连接数据库配置。

 

到上面一步为止,我们的配置工作就已经基本完成了,接下来就是一个数据库编程的具体实例。需要注意的是,就像我上面所提到的,要进行数据库编程,至少得有个数据库吧(巧妇难为无米之炊),还要会一些基本的数据库操作,这些对于学过数据库课程的你应该没有问题,如果你没学过数据库课程,也没关系,你可以花时间看看数据库的一些简单操作,这些在相关课本上很容易找到。

废话不多说,代码如下:

 

package DBManager;

import java.sql.Connection;
import java.sql.DriverManager;

import INFO.Info;

/**
 * 数据库连接类
 * @author Administrator
 *
 */
public class DBConnection {
	//加载并连接本地的SQLServer
	String driveName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
	String url="jdbc:sqlserver://localhost:1433;DatabaseName=cqTalk";
	
	String userName="sa";
	String pwd="xiaoyan710";
	
	/**
	 * 创建时加载驱动
	 */
	public DBConnection(){
		try{
			Class.forName(driveName);
		}catch(Exception e){
			Info.error("驱动加载失败");
		}
	}
	
	public Connection getConnection(){
		Connection con=null;
		try{
			con=DriverManager.getConnection(url,userName,pwd);
			Info.log("数据库连接成功");
		}catch(Exception e){
			e.printStackTrace();
		}
		return con;
	}
	
}

 

 

package User;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import DBManager.DBConnection;
import INFO.Info;

/**
 * 对用户数据的操作
 * @author cq
 *
 */
public class UserDao {

	DBConnection dbCon=null;
	Connection connection=null;
	
	PreparedStatement state=null;//预编译的sql语句对象
	String sql=null;//sql语句
	
	/**
	 * 创建用户操作类时加载驱动
	 */
	public UserDao(){
		dbCon=new DBConnection();
	}
	
	/**
	 * 添加新用户的方法
	 * @param user
	 */
	public void add(User user){
		
		connection=dbCon.getConnection();
		sql="insert into userData values(?,?,?,?,?)";
		try{
			state=connection.prepareStatement(sql);
			state.setString(1, user.getID());
			state.setString(2, user.getPwd());
			state.setString(3, user.getNickname());
			state.setInt(4, user.getChecking());
			state.setString(5, user.getAnswer());
			
			state.executeUpdate();
			Info.log("用户添加成功");
			state.close();
			
		}catch(Exception e){
			e.printStackTrace();
			Info.error("用户添加失败");
		}finally{
			if(connection!=null){
				try{
					connection.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 删除一个用户的方法,根据用户的ID号
	 * @param ID 
	 */
	public void delete(String ID){
		connection=dbCon.getConnection();
		sql="delete from userData where userID=?";
		try{
			state=connection.prepareStatement(sql);
			state.setString(1, ID);
			
			state.executeUpdate();
			Info.log("用户删除成功");
			state.close();
			
		}catch(Exception e){
			Info.error("用户删除失败");
		}finally{
			if(connection!=null){
				try{
					connection.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 更新用户数据的方法
	 * @param user
	 */
	public void update(User user){
		connection=dbCon.getConnection();
		sql="update userData set pwd=?,nickname=?" +
				",checking=?,answer=? where userID=?";
		try{
			//执行更新操作时,所填入的数据顺序一定要与sql语句的数据顺序相同
			state=connection.prepareStatement(sql);
			state.setString(1, user.getPwd());
			state.setString(2, user.getNickname());
			state.setInt(3, user.getChecking());
			state.setString(4, user.getAnswer());
			state.setString(5, user.getID());
			
			state.executeUpdate();
			
			Info.log("用户更新成功");
			state.close();
			
		}catch(Exception e){
			e.printStackTrace();
			Info.error("数据更新失败");
		}finally{
			if(connection!=null){
				try{
					connection.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 根据用户ID查找用户的信息
	 * @param ID
	 */
	public User get(String ID){
		User user=new User();
		connection=dbCon.getConnection();
		sql="select * from userData where userID=?";
		try{
			state=connection.prepareStatement(sql);
			state.setString(1, ID);
			
			ResultSet set=state.executeQuery();
			while(set.next()){
				user.setID(set.getString(1).trim());
				user.setPwd(set.getString(2).trim());
				user.setNickname(set.getString(3).trim());
				user.setChecking(set.getInt(4));
				user.setAnswer(set.getString(5));
			}
			
			state.close();
			set.close();
		}catch(Exception e){
			Info.error("查找失败");
		}finally{
			if(connection!=null){
				try{
					connection.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}
		return user;
	}
}

 

package User;

/**
 * 用户类
 * @author cq
 *
 */
public class User {
		private String ID;//账号
		private String pwd;//密码
		private String nickname;//昵称
		private int checking;//密保验证编号
		private String answer;//答案

		public User(){
			
		}
		
		public User(String ID,String pwd){
			this.ID=ID;
			this.pwd=pwd;
		}

		/**
		 * 获取账号
		 * @return
		 */
		public String getID() {
			return ID;
		}

		/**
		 * 设置账号
		 * @param iD
		 */
		public void setID(String iD) {
			ID = iD;
		}

		/**
		 * 获取密码
		 * @return
		 */
		public String getPwd() {
			return pwd;
		}

		/**
		 * 设置密码
		 * @param pwd
		 */
		public void setPwd(String pwd) {
			this.pwd = pwd;
		}

		/**
		 * 获取昵称
		 * @return
		 */
		public String getNickname() {
			return nickname;
		}

		/**
		 * 设置昵称
		 * @param nickname
		 */
		public void setNickname(String nickname) {
			this.nickname = nickname;
		}

		/**
		 * 获取验证编号
		 * @return
		 */
		public int getChecking() {
			return checking;
		}

		/**
		 * 设置验证编号
		 * @param checking
		 */
		public void setChecking(int checking) {
			this.checking = checking;
		}

		/**
		 * 获取密保答案
		 * @return
		 */
		public String getAnswer() {
			return answer;
		}

		/**
		 * 设置密保答案
		 * @param answer
		 */
		public void setAnswer(String answer) {
			this.answer = answer;
		}
	
}

 

这里简单的介绍了数据库的增删查改等功能(这熟悉的名词是否也在哪里听过呢??O(_)O~),特别需要注意的是,我在更新数据方法中所标明的那一句注释,很多人经常搞乱了顺序而得不到正确的结果。

此外,还有几点:

一、一定要记得finally语句中所执行的内容,不管操作是否成功都一定要关闭连接,这一点非常重要。

二、最好将异常消息打印出来,这在初期编程的时候能够更加方便的帮你解决问题。

三、在使用完数据库之后将sa用户的密码策略改为强制过期,(这一点是出于信息安全的考虑),在每次使用前再取消密码强制过期,并修改密码,再执行jdbc操作,具体修改方法请见上面第四条。

四、Sql Server20002005的连接代码区别:(注意20002005的不同)
    1. 连接SqlServer2000
      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
      URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb";
    2. 连接SqlServer2005
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
五、可能出现的exception: com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
     WARNING: Failed to load the sqljdbc_auth.dll
解决办法:在sqljdbc_1.2.2828.100_chs.exe解压后的文件夹中找到Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.2\chs\auth\x86下的sqljdbc_auth.dll拷贝到:C:WINDOWSsystem32 目录下即可。

基本内容就到这里了,如果你使用的是MySQL,那也没关系,除了环境配置之外,只是驱动跟端口号需要修改罢了,快用数据库优化你的程序吧。

 

<!--EndFragment-->
0
0
分享到:
评论

相关推荐

    Java工程通过JDBC连接数据库方法(SQL Server)

    本教程将详细讲解如何使用Java通过JDBC连接到SQL Server数据库。首先,我们需要了解JDBC的基本概念,然后逐步介绍实现这一过程所需的步骤。 1. JDBC基础: JDBC是Java API的一部分,它提供了一组接口和类,使得...

    JDBC连接Sql Server 2005总结

    以上就是使用JDBC连接SQL Server 2005的基础步骤和注意事项。在实际开发中,可能还需要处理异常,使用连接池优化性能,以及实现事务管理等高级特性。理解并熟练掌握这些知识,将使你在Java数据库编程方面更加...

    采用纯JDBC连接sql server

    下面将详细阐述如何采用纯JDBC连接SQL Server数据库,并介绍相关的知识体系。 首先,要建立JDBC连接,你需要确保引入了SQL Server驱动的JAR包。SQL Server的JDBC驱动通常称为`mssql-jdbc.jar`,由Microsoft提供。除...

    java 连接sqlserver2000驱动文件

    在Java编程中,连接SQL Server 2000数据库通常涉及到使用特定的驱动程序,以便Java应用程序能够与数据库进行通信。本篇文章将详细介绍如何在Java中建立与SQL Server 2000的连接,以及所需的驱动文件。 首先,Java ...

    Java使用jdbc连接MySQL数据库实例分析

    jdbc连接数据库的注意事项 使用jdbc连接MySQL数据库需要注意以下几点: * 配置文件的安全性:配置文件db.properties需要存储在安全的位置,以免泄露数据库连接信息 * 驱动程序的注册:需要正确注册MySQL数据库加载...

    sqlserver 2000

    在Java编程环境中,如果需要连接到SQL Server 2000数据库,需要使用特定的驱动程序,即JDBC驱动(Java Database Connectivity)。这里提到的"sql2000的驱动jar包"就是指用于Java程序与SQL Server 2000通信的Java类库...

    java链接sqlserver驱动

    在Java编程中,连接SQL Server数据库通常涉及到JDBC(Java Database Connectivity)技术。JDBC是Java平台中的一个标准API,它允许Java程序与各种数据库进行交互。本篇将详细介绍如何在Java中链接SQL Server数据库,...

    sqljdbc4.jar程序文件

    - **连接配置**:编写Java代码,设置数据库连接的URL(通常格式为`jdbc:sqlserver://servername:port;databaseName=dbname`)、用户名和密码。 - **建立连接**:通过`DriverManager.getConnection()`方法创建...

    mysql,sqlServer,oracle 驱动包 for java

    标题中的“mysql,sqlServer,oracle 驱动包 for java”指的是用于Java应用程序连接到MySQL、SQL Server和Oracle数据库的驱动程序包。这些驱动程序是Java编程语言中的JDBC(Java Database Connectivity)的一部分,...

    专用SQL数据库维护工具

    2. **连接多样性**:由于SQL数据库有多种类型(如MySQL, PostgreSQL, SQL Server等),该工具可能支持多种数据库连接,通过ODBC(Open Database Connectivity)或JDBC(Java Database Connectivity)接口,允许用户...

    idea开发工具 MySQL数据库 登录验证

    8. **安全注意事项**:在实际开发中,应避免在代码中硬编码数据库凭证,而是使用环境变量或配置文件来存储敏感信息,以提高应用的安全性。 9. **IntelliJ IDEA的数据库插件**:Idea还提供了内置的Database Tools和...

    JDBC讲课流程.docx

    Java Database Connectivity (JDBC) 是Java编程语言中用于标准地访问数据库的API,它由一组Java和Java Native Interface (JNI) 接口组成,允许Java应用程序连接到各种类型的数据库系统。JDBC提供了统一的标准,使得...

    jdbc-mysql.rar_JDBC mysql java

    此外,使用JDBC连接MySQL时,还需要注意一些最佳实践和注意事项: - **配置JDBC驱动**:确保项目中包含了MySQL的JDBC驱动库,如mysql-connector-java.jar,通常通过Maven或Gradle等构建工具管理依赖。 - **错误...

    计算机软件-商业源码-编写代码设置数据库的别名.zip

    - **数据库管理系统设置**:许多数据库系统如MySQL、Oracle、SQL Server等允许在管理工具中直接设置别名。 - **编程语言中的配置**:在应用代码中,可以使用连接池(如Java的C3P0、Python的DBUtils等)配置数据库...

    韩顺平 SqlHelper类大全

    在SQL Server环境下,SqlHelper会使用com.microsoft.sqlserver.jdbc.SQLServerDriver,并按照SQL Server的URL格式进行连接。开发者需要提供正确的数据库服务器名、实例名、数据库名、用户名和密码。 5. **驱动包**...

    JAVA实例开发源码-进销存管理系统(源码+数据库+使用说明).zip

    8. **文档编写**:`程序使用说明.doc`可能是系统使用手册,详细解释了系统的功能、操作步骤和注意事项,这对于用户理解和使用系统至关重要。 通过学习这个进销存管理系统的源码,开发者不仅可以提升JAVA编程技能,...

    JSTL的售票实例

    JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是Java Web开发中的一个重要工具,主要用于简化JSP页面的编程,通过提供一系列预定义的标签,使得开发者能够更高效地处理常见的任务,如数据库操作、...

    IBM DB2通用数据库Windows版快速入门IBM DB2通用数据库Windows版快速入门

    9. **连接与应用程序开发**:DB2支持多种编程接口,如JDBC、ODBC、.NET,允许开发者构建与DB2交互的应用程序。 在提供的文件中,"IBM DB2通用数据库Windows版快速入门.pdf"可能是详细的安装和使用指南,建议仔细...

    《JSP实用编程实例集锦(PDG) 》--1

    同时,可能会讲解一些性能优化和安全注意事项,比如减少不必要的数据库查询,防止SQL注入和跨站脚本攻击等。 这些PDG文件可能是教程的各个章节或部分,每个文件名可能是对应章节的编号或主题标识。通过阅读这些文件...

Global site tag (gtag.js) - Google Analytics