一.第一种方法:
使用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

  中文名:数据源名称

  DSNODBC定义了一个确定的数据库和必须用到的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 数据库用法详解的更多相关文章

  1. Java 中 this 和 super 的用法详解

    前言 这次我们来回顾一下this和super这两个关键字的用法,作为一名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的文章大部分还是以分享Java基础知识为主,学好基础,后面的 ...

  2. Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  3. Java 5 的新标准语法和用法详解集锦

    Java 5 的新标准语法和用法详解集锦 Java 5 的新标准语法和用法详解集锦 (需要在首选项-java-complier-compiler compliance level中设置为java5.0 ...

  4. java中List的用法和实例详解

    java中List的用法和实例详解 List的用法List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提供 ...

  5. Java中堆内存和栈内存详解2

    Java中堆内存和栈内存详解   Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,ja ...

  6. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  7. Java中的equals和hashCode方法详解

    Java中的equals和hashCode方法详解  转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...

  8. 转:Java中的equals和hashCode方法详解

    转自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这 ...

  9. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

随机推荐

  1. setTimeout()和setInterval()的用法及区别

    setInterval 方法表示每间隔一段时间执行一次函数,会一直执行下去,除非手动 clearInterval 来停止. var i = 10; var timer = setInterval(() ...

  2. Mybatis基于接口注解配置SQL映射器(一)

    上文已经讲解了基于XML配置的SQL映射器,在XML配置的基础上MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,也能方便的编写简单的数据库操作代码. Mybat ...

  3. linux编译php

    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/loc ...

  4. PHP filter_var() 函数

    定义和用法 filter_var() 函数通过指定的过滤器过滤一个变量. 如果成功,则返回被过滤的数据.如果失败,则返回 FALSE. 语法 filter_var(variable, filter, ...

  5. uploadify的使用错误

    在看singwa的视频教程中,学习使用hui-admin模版,在使用uploadify插件上传图片中出现错误. ReferenceError: Can't find variable: $因为使用JQ ...

  6. Postgresql临时表

    PostgreSQL支持两类临时表,会话级和事务级临时表.在会话级别的临时表中,在整个会话的生命周期中,数据一直保存.事务级临时表,数据只存在于这个事务的生命周期中.不指定临时表的属性, Postgr ...

  7. (2)C++基本类型

    一.整形 short .int. long. long long sizeof查看类型所占的字节数 cout << sizeof(short)<<endl;//2 字节 cou ...

  8. 大数据和AI怎么与现代教育相结合?

    大数据和AI怎么与现代教育相结合? 比尔·盖茨曾预言,"5年以后,你将可以在网上免费获取世界上最好的课程,而且这些课程比任何一个单独大学提供的课程都要好." 现在看来,虽然并不是每 ...

  9. Hexo next博客的pjax一个Bug引发的关于pjax用法的小技巧-----pjax后图片点击放大的js失效

    文章目录 广告: 背景 发现 解决 get技能 广告: 本人博客地址:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.git ...

  10. 21. Blog接口开发

    一般的系统由登录.增删改查所组成.我们的Blog同样如此.我们会开发登录.创建博客.删除博客.修改博客.查询博客等功能.话不多说,我们直接展开实践吧. 思路分析 创建项目.既然我们要创建一个blog, ...