关闭

Java使用JDBC连接SQL Server数据库

标签: 数据库jdbcsql server
1069人阅读 评论(0) 收藏 举报
分类:

Java连接SQL Server数据库一般有两种方式:一是通过JDBC-ODBC桥接的方式,另外一种是通过JDBC连接数据库。

但是从JDK1.8开始,Oracle公司不再支持使用JDBC-ODBC桥连接SQL Server,如果要使用JDBC-ODBC桥,那么要使用JDK1.7或者更低版本。


本文只介绍通过JDBC的方式连接SQL Server数据库,使用的是SQL Server2005。


首先是下载和导入sqljdbc4包,到微软官网下载并导入sqljdbc4即可。

https://www.microsoft.com/zh-cn/download/details.aspx?id=21599


有时候还需要配置外围应用配置:

Microsoft SQL Server 2005->配置工具->SQL Server外围应用配置器->服务和连接的外围应用配置器->

选SQLEXPRESS->Database Engine->远程连接->本地连接和远程连接->同时使用TCP/IP和named pipes;


然后就可以连接到数据库了,注意:

写连接代码时需要注意2000和2005的不同:

连接到SQL Server20000,代码如下

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb"; 
连接到SQL Server2005,代码如下

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb"; 

下面是具体代码:

/*
 * 演示使用jdbc的方式操作SQL server中的Scott数据库
 */
package com.test2;

import java.sql.*;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Connection ct = null;
		Statement sm = null;

		try{
			//1.加载驱动(作用是把需要的驱动程序加入内存)
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			
			//2.得到连接(指定连接到哪个数据源,用户名,密码)
			//如果配置数据源时选择的是Windows nt验证,则不需要用户名和密码
			ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=scott","sa","123456");
			
			//3.创建Statement或PreparedStatement[区别]
			//Statement的用处是:主要用于发送SQL语句到数据库
			sm = ct.createStatement();
			
			//4.执行(crud,创建数据库,备份数据库,删除数据...)
			
			//演示添加一条数据到dept表
			//executeUpdate可以执行cud操作(添加,删除,修改)
			int i = sm.executeUpdate("insert into dept values('60','Study','Chongqing')");
			
			if(1 == i){
				System.out.println("添加OK");
			}else{
				System.out.println("添加error");
			}
			
		}catch(Exception e){
			e.printStackTrace();
			
		}finally{
			//关闭资源!!!
			//关闭顺序是,谁后创建谁先关闭
			
			try {
				if(null != sm){
					sm.close();
				}
				if(null != ct){
					ct.close();
				}
			} catch (SQLException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}

}

执行成功后可以看到dept表中多了一行:


注意:上面程序使用的是Statement发送SQL语句到数据库,Statement用的不多,一般使用的都是PreparedStatement,注意两者的区别:

  1. 直接使用Statement,驱动程序一般不会对SQL语句做处理而直接交给数据库;使用PreparedStatement驱动程序会有预编译的过程,并且会对语句作字符集的转换,很大程度上提高了效率。
  2. PreparedStatement还能有效的防止危险字符的注入
下面就用PreparedStatement对数据库进行操作:

package com.test2;

import java.sql.*;

public class Test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Connection ct = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try{
			//1.加载驱动(作用是把需要的驱动程序加入内存)
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			
			//2.得到连接(指定连接到哪个数据源,用户名,密码)
			//如果配置数据源时选择的是Windows nt验证,则不需要用户名和密码,1433是SQL Server默认的端口
			ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=scott","sa","123456");
			
			//3.创建PreparedStatement
			ps = ct.prepareStatement("select * from dept");
			//4.执行查询,如果是增加,删除,修改用executeUpdate(),如果是查询用executeQuery()
			rs = ps.executeQuery();

			//re指向的是第一行数据的前一行,不能直接输出rs指向的数据,要用next让他指向下一行(即实际的第一行数据)
			while(rs.next())
			{
				//getInt(1)是获取当前行的第一列数据,注意获取类型要与数据库中表的类型相同
				//也可以直接通过表的段名的方式获取数据,如getInt("deptno");
				System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
			}
			
		}catch(Exception e){
			e.printStackTrace();
			
		}finally{
			//关闭资源!!!
			//关闭顺序是,谁后创建谁先关闭
			
			try {
				if(null != rs){
					rs.close();
				}
				if(null != ps){
					ps.close();
				}
				if(null != ct){
					ct.close();
				}
			} catch (SQLException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}

}

运行结果为:



如果是有条件的查询,则

//创建PreparedStatement
ps = ct.prepareStatement("select * from dept where deptno=? and loc=?");
//给?赋值
ps.setInt(1,10);
ps.setString(2,"NEW YORK");
//执行查询
rs = ps.executeQuery();





0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

java访问SQLServer2008数据库方式一:jdbc-odbc桥连接

import java.sql.*; public class Test2 { public static void main(String[] args) { //定义需要的对象 Co...
  • Geek_ymv
  • Geek_ymv
  • 2013-09-07 14:55
  • 3854

JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证]

JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证] 都说用JDBC连接数据库会出现很多问题,现总结、汇总一下。 前提是已经正确安装了SQL Se...
  • ljheee
  • ljheee
  • 2016-03-25 22:45
  • 4689

java通过JDBC链接SQLServer2012 (亲测有效),并且进行简单的查增删改

下面请一字一句地看,一遍就设置成功,比你设置几十遍失败,费时会少得多。   首先,在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份验...
  • a343902152
  • a343902152
  • 2015-10-14 08:23
  • 2410

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

  • 2016-12-24 16:55
  • 545KB
  • 下载

Java与SQL Server 2005(2000)数据库连接问题 (jdbc驱动)

  • 2011-03-13 12:58
  • 34KB
  • 下载

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

目的 开发环境 环境配置 主要代码以及简单分析 效果演示 源码下载目的    Java项目以及JavaEE项目大都需要连接数据库,JDBC是一种很基础的链接数据库的一种方法,这篇博客主要实现...
  • qq_33171970
  • qq_33171970
  • 2016-12-24 17:09
  • 875

JAVA JDBC连接SQL Server数据库进阶(二)---批处理

批处理的作用:        一次和数据库交互过程中传输多条SQL语句或参数内容。        减少和数据库交互次数,提升性能。 批处理的使用:  Statement:      ...
  • start_mao
  • start_mao
  • 2017-12-05 21:08
  • 44

Java JDBC连接SQL Server数据库

yuama import java.io.IOException; import java.io.InputStream; import java.sql.DriverManager; imp...
  • u010723885
  • u010723885
  • 2014-07-02 20:23
  • 532

Java程序通过JDBC连接远程的数据库SQL Server

代码如下: /** * @作者:刘猛 * @时间:2017.11.12 * @功能:纯JDBC连接数据库 */ package com.jdbc; import java.sql.*; i...
  • weixin_38588973
  • weixin_38588973
  • 2017-11-15 19:46
  • 81

Java JDBC连接SQL Server数据库初级

JDBC(Java数据库连接)是用于执行SQL语句的API,可以维多种关系数据库提供统一的访问,由一组Java语言编写的类和接口组成。 JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构...
  • start_mao
  • start_mao
  • 2017-11-27 15:07
  • 139
    个人资料
    • 访问:22486次
    • 积分:1239
    • 等级:
    • 排名:千里之外
    • 原创:101篇
    • 转载:15篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论