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. php写项目,php写web项目
  2. python迭代器面试题_Python面试题之生成器/迭代器
  3. 全球首款64核AMD工作站发布,搭载最新线程撕裂者Pro,号称“地表最强”
  4. session 对象的简单实例
  5. 新学期的一些安排 | 以及一些小建议
  6. ProxyShell利用分析1——CVE-2021-34473
  7. 问题:图片怎么保存到数据库, 以及怎么把图片从数据库中取出来使用?(已解决)...
  8. 面向对象设计使用语言选择
  9. Mysql整库导出导入
  10. 树的合并 connect
  11. 【js】【前台输入效验】【validate插件的使用】 前端
  12. vector元素个数_STL之vector
  13. Struts中s:checkboxlist的用法
  14. linux安装R3.5.0
  15. 控制系统中对信号求导的注意事项
  16. STM32精确延迟1us和1ms的函数
  17. [NOI Online 2021 入门组] 切蛋糕
  18. IDEA一致卡在build时间过长问题处理
  19. 企业私有网络构建与运维
  20. isEmpty与null的区别

热门文章

  1. Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
  2. 人工智能之神经网络基础入门(最通俗版)
  3. 计算机专业复试面试题难吗,计算机考研复试,别想的太难了!
  4. Python词频统计的3种方法
  5. 计算机软件系统管理说课,计算机软件系统 说课稿
  6. python猜数字游戏实验报告_猜数字游戏实验报告
  7. Python之猜数字游戏
  8. RestSharp的使用记录
  9. RestSharp.RestClient
  10. python给函数设置超时时间已到_在 Linux/Mac 下为Python函数添加超时时间