Java 连接数据库(JDBC、ODBC)

在学习Java中,一定会遇到需要连接数据库的时候。而这个时候,可能就会遇到一些问题,网上有很多解决的文章,不过又可能很难刚好适合解决我们遇到的那个问题。在这里就把测试成功的一些连接方式记录一下:

首先,如果是用jdk自带的JdbcOdbc驱动的话呢,除了平常我们经常在Windows上使用的方式(建立odbc数据源,采用jdbc-odbc桥连接方式)之外,还可以使用这个驱动,然后不建立odbc数据源,进行数据库的连接。这里要强调的是,有很多文章说“不用驱动”连接数据库,那是不可能的!

平常使用的连接是如下形式:

Connection conn=null;

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:数据源","数据库登录名","数据库登录密码");//这个连接就需要odbc数据源,当然,这个在代码这里很方便,而且是基本上只要odbc支持的数据库,都这样子连。不过,我们是学程序的,所以一定不会只学一种连接形式吧(至少我就不会满足于一种),所以现在就说说不用odbc数据源的连接形式:

在Windows平台下,我们学习Java的时候是使用jdbc连接access数据库来当做Java连接数据库的练习的,这个的连接形式就像(应该说是比较特殊的连接方式):

String spath="/database.mdb";//这里的access数据库在该类所在相同的目录里,需要数据库的路径
String dbpath=application.getRealPath(spath);//取得access数据库的绝对路径

String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+dbpath;//这里就是连接方式,或者叫连接字符串
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(url,"","");

很容易记可以看出来,这上面的不用odbc数据源(!!不是不需要odbc驱动!!)的连接方式和用odbc数据源的连接方式的不同之处,就是红色标记部分(只是标识数据库的地方不同和连接字符串里的属性值不同而已,这里需要不同的属性值是理所当然的,因为各个数据库本来就不是完全相同的)。而这里为什么会写成这个形式呢?个人觉得,因为这个是与odbc连接的驱动,而我们在设计数据源的时候,需要根据所要连接的数据库去选择相应的驱动,而access的驱动就是{Microsoft Access Driver (*.mdb)},到这里,应该知道怎么回事了吧~其实红色部分就是odbc连接数据库的驱动和所需要的属性,在这里写上之后就代替了设置数据源的操作。那么我们可以猜测其他的数据库是否也可以用类似的连接方式呢?这个就要去试试啦。本人就是因为有这个想法,所以自己动手修改,然后又因为遇到问题,然后上网查找,才解决问题的(原来网上就有这样子的例子了,就是没有说明白什么,要不是我自己尝试去修改,可能很难知道是为什么,当然,我现在知道的原因可能也是不正确的,不过至少有思考过)。

下面就说说sql server2000不用odbc数据源的连接方式:

根据上面的对比,我们可以先设置数据源,当然这里只是为了知道odbc是用了哪个驱动去连接sql server2000的,这里就不说怎么设置数据源啦,在选择数据库的驱动的时候,可以看到有{SQL Server},这个就是啦,然后我们可以猜想可能的连接方式是:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

conn=DriverManager.getConnection("jdbc:odbc:driver={SQL Server};server=.;database=数据库;uid=数据库登录名;pwd=数据库登录密码");//这里是因为我之前也用vs2005,然后在里面看到有这个连接字符串,所以就采用了这个,很幸运,这个的连接可以用。

当然不用odbc数据源的连接方式,还有一个方式,就是用数据库产商自带的jdbc驱动:

比如连接sqlserver 2005的就像:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//sqlserver2005的jdbc连接驱动
 conn=DriverManager.getConnection("jdbc:sqlserver://ip地址:端口;databaseName=数据库名;user=数据库登录名;password=数据库登录密码");//这里的连接方式可以在驱动的文件夹中找到

以上是我昨晚突发奇想尝试后得到的,应该适合其他跟我一样只是接触到Java的皮毛的人的。如果有哪些地方是说错的,麻烦帮我指出来啦,我的邮箱地址是cidy0106@gmail.com,谢谢啦。

» 本文链接地址:https://www.xidige.com/58

打开支付宝扫一扫,即可进行扫码打赏哦

扫码支持
扫码打赏,你说多少就多少

标签:

分享到:

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:
评论区0人评论142人参与

电子邮件地址不会被公开。 必填项已用*标注

*

loading

赞助商广告