怎样JAVA通过JDBC-ODBC桥访问数据源,配置数据源

Python013

怎样JAVA通过JDBC-ODBC桥访问数据源,配置数据源,第1张

导入java.sql包

一、加载要连接数据库的驱动程序

//Jdbc-Odbc桥 和 Microsoft Access 数据库

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

// SQL Server 驱动程序:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")

注:Class.forName()方法将给定的类加载到JVM,如果系统中不存在给定的类,则会引发异常

二、通过驱动程序管理器得到连接实例

Connection conn=null

//1.

//1.1建立数据源

conn=DriverManager.getConnection("jdbc:odbc:MyDataSource")//MyDataSource是数据源名称

//1-2、不建立数据源

conn=DriverManager.getConnection("jdbc:odbc:Driver=Microsoft Access Driver (*.mdb)DBQ=C:\\VBTest.mdb")

//2.SQL Server

conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433databasename=mydb","sa","")

注:DriverManager类跟踪已注册的驱动程序,通过getConnection(URL)方法, 找到一个能够连接至URL中指定的数据库驱动程序

它接收三个参数, 分别表示1 数据源的名称、类型 2 用户名(可选) 3 密码(可选)

三、基于连接对象建立处理器对象

Statement stmt=conn.createStatement()

四、准备sql命令

String sql="select * from Student"

五、执行命令返回结果集

ResultSet rs=stmt.executeQuery(sql)

六、显示结果集

while(rs.next())//只要后面有记录

{

//对当前行的所有字段遍历

for(int i=1i<=rs.getMetaData().getColumnCount()i++)

{

System.out.print(rs.getMetaData().getColumnName(i)+": ")//显示字段名

System.out.println(rs.getString(i))//显示字段当前值

}

System.out.println()

}

七、关闭资源

rs.close()//关闭记录集

stmt.close()//关闭处理器对象

conn.close()//关闭连接对象

预处理器的应用:

//3.基于连接对象建立预处理器对象

PreparedStatement pstmt=conn.prepareStatement("insert into student values(?,?,?,?)")

//4.给预处理对象的参数赋值

pstmt.setString(1,"8888")

pstmt.setString(2,"nemo")

pstmt.setString(3,"accp")

pstmt.setString(4,"sanxianglu")

//5.执行预处理命令

int i=pstmt.executeUpdate()

System.out.println(i+"条记录已成功插入!")

详情如下:

以JNDI方式创建数据源首先要配置数据源的相关连接信息,也就是数据源连接池。该配置应该在Tomcat安装目录下的conf/context.xml 文件中配置,在Eclipse的J2EE架构下,也可以把context.xml文件创建在/META-INF目录下。

正确的配置后,就可以在程序中以JNDI的方式创建数据源,得到数据库连接并进行相应的操作。

首先,你要明白,什么是数据源,数据源跟数据连接池有什么区别。

一般我们在程序里面配置的,最多都是数据连接源,而不是数据连接池。

其次,在tomcate里面配置有个什么好处呢,’

如果一个服务器,里面有多个独立的应用,

那么,我们配置一个数据源,只需要在程序里面配置一下JNDI,就可以了,每个程序都

指向这个数据源就好了。

可是有一天我们要换数据库了,如果我们赔的数据源,那么,我们就可以直接改数据源就好了。

如果是在数据库里面配置的,那么我们就需要再每个工程里面都改一遍。