欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

教程  Java语言学习—第二十章 Java数据库连接[Java基础]

Java 原创 1066 0评论

内容概要:

1.JDBC编程 

2.连接数据库的常用方式 

3.JDBC数据库的连接


1.JDBC编程


JDBC(Java DataBase Connectivity,Java数据库连接)是Java语言支持基本SQL功能的通用程序编程接口API,它实现了一个独立特定数据库管理系统DBMS的通用数据库访问和存储接口。使用JDBC,可以建立与数据库的连接,并发送SQL语句和处理结果。JDBC有一些的特点:

(1)可在现有数据库接口上实现。

(2)提供一致的Java界面。

(3)简单化。

(4)使用健壮、静态的通用数据类型。

(5)使人物简单化。

(6)多种方法、多种功能。


JDBC连接步骤

在Java中,关机的java.sql/javax.sql等类库提供了JDBC相关类及接口程序,因为JDBC是执行SQL的标准应用程序接口规范,所以建立一个使用JDBC的应用程序有几个重要步骤。如图:

步骤说明

语句范例

引进所要的JDBC packageimport java.sql.*;
新建适用的的JDBC驱动程序Class.forName("com.ibm.db2.jdba.app.DB2Driver).newInstance();
通过JDBC URL驱动数据库连接Connection conn=DriverManager.getConnection("jdbc;db2:sample");
建立SQL语句对象Statement stmt=conn.createSteament();
执行SQL语句及接收返回结果ResultSet rs=stmt.executeQuery("SELECT name FROM staff");
关闭查询结果集ResultSetrs.close();
关闭SQL语句连接stmt.close();
关闭数据库连接Conn.close();


通过executeQuery()方法进行查询

一般查询是指没有参数的查询,这类查询一般使用Statement对象实现。一般查询的执行过程分为创建Statement对象,选项设置,执行查询语句和关闭Statement对象。


具体过程如下:

(1)创建Statement对象。执行SQL查询的第一步是准备好一个Statement对象,创建Statement对象可以使用connection的createStatement()方法。如:

Statement st=con.createStatement(); 

(2)执行查询语句。执行SQL查询语句可以使用Statement的executeQuery()和execute()方法。方法的参数是一个String对象,该对象实际上是一个代表要执行查询的SELECT语句字符串。executeQuery()方法在一般情况下只能执行一个SQL查询语句,并且只能返回一个结果集,而execute()方法可以返回多个结果集。

executeQuery()方法返回一个ResultSet对象,如:

ResultSet rs=st.executeQuery("slect * from emplyee"); 

ResultSet对象一次只能看到一个数据行,通过next()方法移动到下一行,得到一行数据,然后通过getXxx()方法获取该字行的字段值。


ResultSet的常用方法

boolean absolute(int row)——移到指定行

void afterLast()——移到最后一条记录后面

void beforeFirst()——移到第一条记录前面

boolean first()——移到第一条记录上

boolean last()——移到最后一条记录上

boolean isBeforeFirst()——指针是否在第一条记录前面

boolean isAfferLast()——指针是否在最后一条记录前面

boolean next()——移动记录指针到下一记录

executeQuery()和execute()方法的参数是一个代表SQL查询语句的字符串,在编译过程中,JDBC仅检查参数是否是一个字符串,而不管字符串是否是一个SQL查询语句。

(3)关闭Statement对象。关闭Statement对象可以使用Statement对象的close()方法。Statement对象被关闭后,用该对象创建结果集也会被自动关闭。

通过executeUpdate()方法更新、添加、删除记录。

数据库的修改、插入和删除涉及到SQL语句有CREATE、DELETE、UPEATE等。树结构的更新操作在Statement对象上能够完成,执行SQL的更新可使用executeUpdate()方法。


executeUpdate()方法的参数是一个字符串对象,该字符串要执行的SQL语句,其返回值是一个整数,该整数代表DELETE等操作所影响记录的条数。对于其他不返回结果的SQL语句,该方法返回值为零。

(1)插入记录:用SQL的INSERT语句。

(2)修改记录:用SQL的UPDATE语句。

(3)删除记录:用SQL语句的DELETE。


2.连接数据库的常用方式


1)利用java数据库驱动程序连接

java应用程序→JDBC API→JDBC中间驱动程序→中间(应用服务器)→数据库

连接前准备

为了连接数据库,要有JDBC驱动程序,接下来使用MySQL数据库进行操作,

要下载MySQL数据库的JDBC驱动程序。下载mysql驱动包,并放置在tomcat/lib的目录下。

连接数据库

(1)加载JDBC驱动程序

首先必须通过java.lang.Class类的forName动态加载程序,

并响应DriverManager注册JDBC驱动程序。

MySQL的驱动程序是com.mysql.jdbc.Driver,加载MySQL的驱动程序代码如下:

try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}

如果使用JDBC-ODBC连接数据库,此时Class类的驱动程序为sun.jdbc.odbc.JdbcOdbcDriver,期代码为:

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

(2)提供JDBC URL

JDBC URL定义了连接数据库的协议,子协议和数据源名称。其格式为:

协议:子协议:数据源名称

“协议”在JDBC中总以jdbc开始;子协议是驱动程序或是数据库管理系统名称,使用MySQL的mysql;

数据源名称来源的地址和连接接口。如mysql的JDBC URL方式如下:

jdbc.mysql://主机名称:连接端口/数据库名称?参数=值&参数=值 

主机名称可以是本机localhost或其他的,连接端口为3306,假如连接demo数据库,指定用户名和密码,如下:

String url=“jdbc.mysql://localhost:3306/demo?"+"user=root&password=1111";

如果要使用中文来存取,还必须给出参数useUnicode及CaracterEncoding,如:

String url=“jdbc.mysql://localhost:3306/demo?"+"user=root&password=1111

&useUnicode=true&characterEncoding=utf-8";

(3)获取Connection对象

要连接数据库,实际上就是向java.sql.DriverManager请求并获得java.sql.Connection对象。

Connection是数据库连接的具体对象,一个conncetion代表一个数据库,

可以使用DriverManager的getConnection()方法,

指定JDBC URL作为自变量并获得Connection对象。如下:

try{
String url=“jdbc.mysql://localhost:3306/demo?"+"user=root&password=1111";
Connection conn=DriverManager.getConnection(url);
...
}}catch(SQLException e){...}

连接实例

String driverName="com.mysql.jdbc.Driver";

String userName="root";

String userPassword="1111";

String dbName="book";

String tableName="bookInfo";

String url= “jdbc.mysql://localhost:3306/dbName?"+"user=root&password=1111"

Class.forName("com.mysql.jdbc.Driver").newInstancee();

Connection conn=DriverManager.getConnection(url);


2)使用JDBC-ODBC桥连接数据库


3.JDBC数据库连接


(1)连接Oracle数据库

1、 安装oracle客户端程序,在tnsnames.ora中配置好相应的数据库连接串文件,此处设连接串名为“dbora”。 

2、 在windows的控制面板->“数据库源ODBC”中,建立相应的用户或者系统DSN,具体方法:

在安装的数据源的驱动程序选择“Microsoft ODBC for Oracle”。 

点击“完成”,在弹出的对话框中,填入如下信息: 

数据源名称:dbjdbc 

描述:jdbc数据源 

用户名称:manager -此为数据库用户名 

服务器:dbora -此即为连接串名 

其中“dbjdbc”是在java程序中要引用的名字,至此数据源dbjdbc已建立。 

3、 建立如下的java程序 

// 使用本地的jdbc连接串,查询oracle数据库表 

import java.sql.*; 
public class lookup { 
public static void main(String[] args) 
throws SQLException, ClassNotFoundException { 
//定义了数据库连接串 
String dbUrl = "jdbc:odbc:dbjdbc"; 
//数据库的用户名 
String user = "manager"; 
//数据库的用户口令 
String password = "ora912"; 
// 加载jdbc-odbc bridge驱动程序 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
// 与url指定的数据源建立连接 
Connection c = DriverManager.getConnection(dbUrl, user, password); 
//采用Statement进行查询 
Statement s = c.createStatement(); 
ResultSet r = s.executeQuery("SELECT empno,name from emp"); 
while(r.next()) { 
// 打印字段信息 
System.out.println(r.getString("empno") + ", 
" + r.getString("name ") ); 
} 
// 关闭Statement,其上的ResultSet也将关闭 
s.close(); 
} 
}

在jdbc中查询的语句有3类:Statement、PreparedStatement、CallableStatement。


此方法在使用时需要将oracle的jar包加到classpath变量中,此包可以在oralce客户端程序的$ORACLE_HOME/jdbc/lib/classes12.jar找到。 

import java.sql.*; 
public class jdbcthin { 
//dbUrl数据库连接串信息,其中“1521”为端口,“ora9”为sid 
String dbUrl = "jdbc:oracle:thin:@10.10.20.15:1521:ora9"; 
//theUser为数据库用户名 
String theUser = "sman"; 
//thePw为数据库密码 
String thePw = "sman"; 
//几个数据库变量 
Connection c = null; 
Statement conn; 
ResultSet rs = null; 
//初始化连接 
public jdbcthin() { 
try { 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
//与url指定的数据源建立连接 
c = DriverManager.getConnection(dbUrl, theUser, thePw); 
//采用Statement进行查询 
conn = c.createStatement(); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
}


(2)各种数据的连接

1、Oracle8/8i/9i数据库(thin模式) 

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 

String url="jdbc:oracle:thin:@localhost:1521:orcl"; 

//orcl为数据库的SID 

String user="test"; 

String password="test"; 

Connection conn= DriverManager.getConnection(url,user,password);


2、DB2数据库 

Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); 

String url="jdbc:db2://localhost:5000/sample"; 

//sample为你的数据库名 

String user="admin"; 

String password=""; 

Connection conn= DriverManager.getConnection(url,user,password);


3、Sql Server7.0/2000数据库 

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

String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; 

//mydb为数据库 

String user="sa"; 

String password=""; 

Connection conn= DriverManager.getConnection(url,user,password);


3、Sql Server2005数据库 

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

String url="jdbc:sqlserver://localhost:1433;DatabaseName=mydb"; 

//mydb为数据库 

String user="sa"; 

String password=""; 

Connection conn= DriverManager.getConnection(url,user,password);


4、Sybase数据库 

Class.forName("com.sybase.jdbc.SybDriver").newInstance(); 

String url =" jdbc:sybase:Tds:localhost:5007/myDB"; 

//myDB为你的数据库名 

Properties sysProps = System.getProperties(); 

SysProps.put("user","userid"); 

SysProps.put("password","user_password"); 

Connection conn= DriverManager.getConnection(url, SysProps);


5、MySQL数据库 

Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 

String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" 

//myDB为数据库名 

Connection conn= DriverManager.getConnection(url);


6.SQL连接实例


SQL Server2005

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBConnection {
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=bbs";
String user = "sa";
String pwd = "sa";
conn = DriverManager.getConnection(url, user, pwd);
} catch (Exception e) {
e.printStackTrace();
}
return conn;}
public static void close(ResultSet rs, Statement ps, Connection conn) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null || !conn.isClosed()) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}}}


SQL Server2000

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
public static final String DRIVER_CLASS = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
public static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pets";
static {
try {
Class.forName(DRIVER_CLASS);// 数据库驱动
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 创建连接
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, "sa", "");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
// 关闭连接
public static void closeConnection(Connection conn) {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

 

问题思考


转载请注明: ITTXX.CN--分享互联网 » Java语言学习—第二十章 Java数据库连接[Java基础]

最后更新:2018-10-16 17:34:21

赞 (3) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽