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;
![]()
![]()
安装后是上图的结果。
第二类问题:
![]()
解决方法:没有全部导入上述的三个驱动包。重新导入。