Java中链接MS SQL 数据库用法详解
一.第一种方法:
使用JDBC—ODBC的桥方式
JDBC—ODBC桥连接器是用JdbcOdbc.class 和一个用于访问ODBC驱动程序的本地库实现的,对于Windows平台,该本地库是一个动态链接库DLL(JDBCODBC.DLL).
由于JDBC再设计上和ODBC很接近。在内部,这个驱动程序把JDBC的方法映射到ODBC调用上,这样,JDBC就可以和任何可用的ODBC驱动程序进行交互了,这种桥接器的优点是:它使JDBC目前有能力访问几乎所有的数据库。
(1) 使用JDBC—ODBC桥方式连接数据库的过程
应用程序—>JDBC API —>JDBC-ODBC—>ODBC API —>ODBC层—>数据源。
(2) 连接数据库的具体操作方法
首先打开控制面板——》管理工具——》数据源(ODBC)如图所示:
有三个选项卡要注意:用户DSN,系统DSN,文件DSN。有关这三种的DSN的信息见后面。在这里我们选择用户DSN(系统DSN也可以).原因见后面。然后点添加:
然后:
选择SQL Server,点击完成:
说明:1.这里的“名称”一定要和你访问的数据库的名称一样(不一定是DataSource),但是描述无所谓。 2. 这里的服务器一定要选择你数据库所在的服务器上(一般都是local)。设置好后选择下一步:
说明:在这里要选择使用用户输入登录ID…….;登录ID为:sa,密码自己设置设置到好要到数据库(SqlServer)中设置一下:
安全性中的登录,右击“sa”,选择属性设置相应数据库的访问ID和密码,这里要和上面的ID和密码一致。完成后单击下一步:
说明:选择更改默认的数据库;选择你要访问的数据库。选择下一步然后选择下一步。直至完成。这样就配置好了。(3):核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动Conn=DriverManager.getConnection("jdbc:odbc:students","sa","123456");//获得连接(students 是要访问的数据库的名称,sa是登录ID,123456 是密码);DSN的解释:原名:Data SourceName
中文名:数据源名称
DSN为ODBC定义了一个确定的数据库和必须用到的ODBC驱动程序。每个ODBC驱动程序定义为该驱动程序支持的一个数据库创建DSN需要的信息。就是说安装ODBC驱动程序以及创建一个数据库之后,必须创建一个DSN。
一个DSN中至少应该包含如下一些内容:
◆关于数据库驱动程序的信息。
◆数据库存放位置。文件型数据库(如Access)的存放位置为数据库文件的路径;非文件型数据库(如SQL Server)的存放位置是指服务器的名称。
◆数据库名称。在ODBC数据源管理器中,所有的DSN名称是不能重复的。
一个DSN可以定义为以下3种类型中的任意一种:
★用户数据源:这个数据源对于创建它的计算机来说是局部的,并且只能被创建它的用户使用。
★系统数据源:这个数据源属于创建它的计算机并且是属于这台计算机而不是创建它的用户。任何用户只要拥有适当的权限都可以访问这个数据源。
★文件数据源:这个数据源对底层的数据库文件来说是确定的。换句话说,这个数据源可以被任何安装了合适的驱动程序的用户使用。
DSN 文件(数据源名)
Windows DSN 文件(数据源名)主要是用来存储数据库连接信息。如果你有很多网页需要传送数据,就可以很简单的通过DSN文件路径来完成而不需要传送数据到每个页面了。
出于安全考虑,DSN文件一般放置在主机目录的子目录中,这样不明访问者就访问不了这个目录。DSN文件需要在ASP和ADO一起访问数据库。名称为:”_dsn” 在主机帐户的根目录中(注: DSN文件仅支持windows 方案)经常遇到的错误:(1):ClassNotFound:
解决方法:观察加载驱动的语句是否有问题Class.forName(…..);(2):无法找到数据源或者默认的驱动程序:
解决方法:查看ODBC的配置是否正确(特别是数据源的名称一定要和你访问的数据库的名称一样
二:第二种方法:这种实现方法是直接使用数据库厂商提供的专用的网络协议创建的驱动程序,通过它可以直接将JDBC API 调用转换为直接网络调用。这种调用方式一般性能比较好,而且也是实际应用中最简单的方法,因为它不需要安装其他的库或中间件,几乎所有的数据库厂商都为它们的数据库提供了这种JDBC驱动程序。(1) 使用JDBC API方式连接数据库的过程应用程序—》JDBC API—》驱动程序—》数据源(2) 连接数据库的具体操作方法:首先导入驱动包(一般由数据厂商提供,也可以到网上去下,共三个包:(这里是SqlServer的驱动包:mssqlserver.jar; msutil.jar; msbase.jar;)如图所示:右击工程—>选择属性:
选择“Add External JARs”导入外部包,完成(1) 核心代码:String strDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strUrl = "jdbc:microsoft:sqlserver://localhost:1533;DatabaseName=kcsj";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动Conn=DriverManager.getConnection(strUrl,"sa","123456");//获得连接第一类问题:
解决方法:查看端口号:(1):启动SqlServer网络使用工具
选择TCP/IP,查看属性。看是不是端口号为:1433. (2):是否安装了SqlServer SP4补丁,因为SqlServerSP4以下的版本默认是不打开1433端口号的。安装时要注意,双击SP4.exe。之后不能完事了,要到你安装到电脑上的文件夹下运行setup.bat(批处理):
这时才是安装SP4.装完后打开SqlServer的查询分析器 输入指令:select@@version;![]()
安装后是上图的结果。 第二类问题:
解决方法:没有全部导入上述的三个驱动包。重新导入。
Java中链接MS SQL 数据库用法详解的更多相关文章
- Java 中 this 和 super 的用法详解
前言 这次我们来回顾一下this和super这两个关键字的用法,作为一名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的文章大部分还是以分享Java基础知识为主,学好基础,后面的 ...
- Java中static变量作用和用法详解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...
- Java 5 的新标准语法和用法详解集锦
Java 5 的新标准语法和用法详解集锦 Java 5 的新标准语法和用法详解集锦 (需要在首选项-java-complier-compiler compliance level中设置为java5.0 ...
- java中List的用法和实例详解
java中List的用法和实例详解 List的用法List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提供 ...
- Java中堆内存和栈内存详解2
Java中堆内存和栈内存详解 Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,ja ...
- 教程-Delphi中Spcomm使用属性及用法详解
Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...
- Java中的equals和hashCode方法详解
Java中的equals和hashCode方法详解 转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...
- 转:Java中的equals和hashCode方法详解
转自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这 ...
- js数组中foEach和map的用法详解 jq中的$.each和$.map
数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...
随机推荐
- JavaScript面向对象小抄集
前言 本文旨在记录JavaScript中面向对象的基础知识 搞明白JavaScript中的面向对象 一切都是对象 JavaScript中,除了基本类型外,其它类型都是对象类型 所谓对象就是若干属性的集 ...
- 每天一个linux命令:cp(8)
cp cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时, ...
- OC学习篇之---循环引用问题
在之前的一片文章中,我们介绍了数组操作对象的时候引用问题以及自动释放池的概念: http://blog.csdn.net/jiangwei0910410003/article/details/4192 ...
- 微服务架构 技能图谱skill-map
# 微服务架构 技能图谱 ## 理论基础### 概念#### 多微合适 - 非代码函数 - 非重写时间 - 适合团队最重要 - 独立业务属性 - 全功能团队 #### 进程隔离 - 服务运行在独立的进 ...
- leetcode中的一些二分搜索树
235(最近公共祖先) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left ...
- sql审核工具调研安装-sqlAdvisor和soar
sql审核工具调研 基于soar的sql审核查询平台: https://github.com/beiketianzhuang/data-platform-soar 1.美团工具sqlAdvisor工 ...
- 字符串模式匹配算法系列(三):Trie树及AC改进算法
Trie树的python实现(leetcode 208) #!/usr/bin/env python #-*- coding: utf-8 -*- import sys import pdb relo ...
- VC的小工具查询exe的依赖
查看程序或动态库所依赖的动态库 dumpbin /dependents abc.exe 查看动态库的输出函数 dumpbin /exports abc.dll
- CentOS 7 安装 nginx1.15
1,安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel SSL功能需要openssl库 gzip模块需要z ...
- SiteMesh 2.X 的使用(网页结构模板)
SiteMesh是基于Servlet的filter的,即过滤流.它是通过截取reponse,并进行装饰后再交付给客户. 其中涉及到两个名词: 装饰页面(decorator page)和 "被 ...