内容概要:
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 package | import 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"); |
关闭查询结果集ResultSet | rs.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