java数据库连接方式有两种,其中JDBC-ODBC桥连方式属于之一,JDBC-ODBC桥连方式连接数据库适用于JDK1.8之前的JDK版本。具体的连接过程详见下文。

详析JDBC-ODBC桥连方式

JDK提供JDBC接口,JDBC是一种可以执行SQL语句的JavaAPI,是连接数据库和Java应用程序的纽带,但是注意提供的只是接口,数据库提供商实现这些接口,就是所谓数据库驱动。Java调用数据库驱动,驱动真正执行数据库操作。

ODBC(开放数据库互连)是Microsoft引进的一种早期数据库接口技术。它实际上是ADO的前身。早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(OpenDatabase Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库.

JDBCC-ODBC桥是一个JDBC驱动程序,完成了从JDBC到ODBC之间的转换工作,使用JDBC-ODBC桥连方式连接数据库的步骤如下:

1、配置数据源

选择控制面板→管理工具→数据源,弹出如图对话框。

点击添加,选择SQL Server。

点击完成,弹出如下对话框。

点击下一步。

点击下一步。

默认连接的数据库为master,此处更改为实验要求数据库。

点击下一步,弹出如下对话框,不作任何改动,直接点击完成。

选择测试数据源。

配置数据源完成。

2、在程序中连接数据源

第一步:加载驱动(作用是把需要的驱动程序加入内存)。Class类是java.lang包中的一个类,通过该类的静态方法forName()可以加载sun.jdbc.odbc包中的类JdbcOdbcDriver来建立JDBC-ODBC桥连接器。

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

第二步:得到连接(指定连接到哪个数据源),如果配置数据源时选择的是Windows NT验证方式,则不需写出用户名和密码。使用java.sql包中的Connection接口,并通过DriverManager类的静态方法getConnection()创建连接对象。

Connectionct=DriverManager.getConnection("jdbc:odbc:simpledb","用户名","密码")

如果有用户名和密码,则在数据源之后写出。

第三步:向数据库发送SQL语句。使用Statement接口声明一个SQL语句对象,并通过刚才创建的数据库对象ct的createStatement()方法创建SQL对象。

Statement sql=ct.createStatement()

完整的代码如下:

package sqldemo;

import java.sql.*;

public class sql {

Connection con;

public ConnectiongetConnection() {

try {

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

System.out.println("数据驱动加载成功");

}catch(ClassNotFoundExceptione) {

e.printStackTrace();

}

try {

con=DriverManager.getConnection("jdbc:odbc:simpledb","用户名","密码");

System.out.println("数据库连接成功");

}catch(SQLExceptione) {

e.printStackTrace();

}

return con;

}

public static voidmain(String[] args) {

sqlconnection=new sql();

connection.getConnection();

}

}

上述代码中,第一个try...catch中的代码块通过java.lang包中的静态方法forName()来加载数据库驱动程序,如果加载失败会抛出ClassNotFoundException异常,应该确定数据库驱动是否成功加载到程序中。第二个try...catch中的代码块通过java.sql包中的DriverManager类的静态方法getConnection(Stringurl,String user,String password)建立数据库连接。

java与数据库连接odbc_详解java数据库连接之JDBC-ODBC桥连方式相关推荐

  1. java 引用传递_详解java的值传递、地址传递、引用传递

    详解java的值传递.地址传递.引用传递 一直来觉得对值传递和地址传递了解的很清楚,刚才在开源中国上看到一篇帖子介绍了java中的值传递和地址传递,看完后感受颇深.下边总结下以便更容易理解. 按照以前 ...

  2. java内部格式_详解java内部类的访问格式和规则

    详解java内部类的访问格式和规则 1.内部类的定义 定义一个类来描述事物,但是这个事物其中可能还有事物,这时候在类中再定义类来描述. 2.内部类访问规则 ①内部类可以直接访问外部类中的成员,包括私有 ...

  3. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  4. java switch中if_详解java中if语句和switch的使用

    if语句 说起if语句,那么不得不提起三元运算符 a>b?c=0:c=1; 如果a>b结果为true,那么c=0,为false,c=1 那么下面看下if语句 if(a>b)c=0; ...

  5. python java混合编程_详解java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  6. java 自动装载_java_详解Java的Spring框架下bean的自动装载方式,Spring容器可以自动装配相互协 - phpStudy...

    详解Java的Spring框架下bean的自动装载方式 Spring容器可以自动装配相互协作bean之间的关系,这有助于减少对XML配置,而无需编写一个大的基于Spring应用程序的较多的和元素. 自 ...

  7. Java implement意思_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...

  8. java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法

    Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...

  9. java runnable 异常_详解Java中多线程异常捕获Runnable的实现

    详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...

  10. java 代码块_详解java中的四种代码块

    在java中用{}括起来的称为代码块,代码块可分为以下四种: 一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. ...

最新文章

  1. 146. Leetcode 51. N 皇后 (回溯算法-棋盘问题)
  2. pytorch之torch.backends.cudnn.benchmark=True——使用 GPU 来加速网络的训练
  3. Java虚拟机类加载机制——案例分析
  4. Redhat Enterprise Linux 5 实战系列(六)为RHEL5开启samba
  5. 实战—用户价值模型搭建
  6. 飞畅 8口RS-485集线器产品性能参数介绍
  7. 【2017001】IList转DataTable、DataTable转IList
  8. 对reids 服务器性能测试
  9. 全国计算机二级c语言和江苏教材一样吗,计算机二级省级和全国计算机二级考试内容一样吗...
  10. IJCAI 2019 | 为推荐系统生成高质量的文本解释:基于互注意力机制的多任务学习模型...
  11. 【图像压缩】基于matlab DCT变换图像压缩【含Matlab源码 804期】
  12. STM32 vcap引脚
  13. Linux账户管理详解
  14. 思考:Redis为什么这么快?
  15. Python编程之求数列20项和
  16. VR消防灭火模拟训练系统
  17. 激光投影电视和液晶电视哪个好 激光投影电视和液晶电视什么区别
  18. html 音乐切换不暂停,web-audio-api可视化音乐播放器,实现暂停切换歌曲功能,粉色系专场~...
  19. 蓝松视频编辑SDK使用说明
  20. 【ASCII如何理解?】

热门文章

  1. 超级好用论文写作工具NoteExpress下载和安装
  2. 用BT搜宝快速找种子
  3. 阅读PDF乱码问题简便解决方法教程
  4. 基于WebUploader、SpringMVC的断点续传
  5. 手机号码校验正则表达式
  6. 从exe程序反汇编得到py源码
  7. 对计算机网络考研知识点归纳(不断更新中T)
  8. glibc中malloc源码分析
  9. linux 查看ftp连接用户
  10. AltiumDesigner绘制PCB(一)