Java 连接数据库入门教程(附件有图解)
JAVA数据库连接一、了解JDBC
JDBC(Java DataBase Connectivity)是java数据库连接API。简单地说,JDBC能完成3件事:
(1)与一个数据库建立连接;
(2)向数据库发送SQL语句:
(3)处理数据库返回的结果。
下面我们就结合一个例子来说明这3步。
JDBC在设计上和ODBC很相似。ODBC和数据库建立连接的一种方式是首先建立起一个JDBC-ODBC桥接器。由于ODBC驱动程序被广泛的使用,建立这种桥接器后,使得JDBC有能力访问几乎所有类型的数据库。
二、建立数据库
假设我们有一个用Access设计的数据库:student.mdb,该库中有一个表,表的名字是
chengjibiao
三、设置数据源
为了同这个数据库建立连接,打开windows中的控制面板的管理工具的ODBC数据源。
点击图3 “添加”按钮,增加新的数据源。
选择“Microsoft Access Driver(*.mdb)”之后,点击完成按钮(为数据源选择了驱动程序)
在“数据源名”文本框里写入你喜欢的名字,这里起名为“ceshi”。
这个数据源就是指某个数据库。
再点击“选择”按钮,把数据源ceshi设成要连接的数据库student.mdb。
如果我们要为数据源ceshi设置一个”登录名称”和“密码”的话,就再点击“高级”
按钮,否则点击确定按钮就完成了数据源设置的全部步骤。
现在,假设我们要给数据源一”登录名称”和“密码”,那么点击“高级”按钮。
在”登录名称”里输入一个用户名,这里我们给的是meng ;在 “密码”文本框里输入口令(这里我们输入的是1234)。(注意这里的密码和数据库本身的密码没有关系)。然后都点击确定按钮,就完成了全部过程。关闭控制面板即可。
四、JDBC-ODBC桥接器
1.建立JDBC-ODBC桥接器
现在我们有了一个数据源,这个数据源就是一个数据库。
为了连接到这个数据库,首先要建立一个JDBC-ODBC桥接器:
C1ass.forName(“sun.jdbc.Ddbc.JdbcOdbcDriver ”);
这里,Class是包java.sq1中的一个类,这类通过调用它的静态方法forName就可以建立JDBC-ODBC桥接器。
注意:建立桥接器时可能发生异常、因此必须捕获这个异常。
方法是:
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch (java.lang.ClassNotFoundException e)
{
System.out.println(" 打不开文件" + e);
}
2.连接到数据库
首先使用包java.Sql中的Connection类声明一个对象.然后再使用类DriverManager调用它的静态方法getConnectio创建这个连接对象:
Connection con = DriverManager.getConnection(“jdbc:odb:数据源的名字”,“登录名称”,“密码”);
如没有设置登录名称和密码,则为:
Connection con = DriverManager.getConnection(“jdbc:odb:数据源的名字”,“”,“”);
这里的例子的方法为:
Connection con = DriverManager.getConnection(“jdbc:odbc:ceshi”,“meng”,“1234”);
建立连接时应捕获SQLException异常:
try {
Connection con= DriverManager.getConnection("jdbc:odbc:ceshi","meng","1234");
}
catch (SQLException e)
{ }
这样就建立好了到数据库student.mdb的连接。
3、向数据库发送SQL语句
首先使用statement声明—个SQL语句对象,然后通过刚才创建的连接数据库的对象con调用createStatement()方法创建这个SQL语句对象。
Try { Statement sql=con.createStatement( );}
Catch(SQLException e){ }
4、处理查询结果
有了SQL对象后,就可以调用相应的方法实现对数据库的查询和修改。并将查询结果存放在一个ResultSet类声明的对象中,也就是说SQL语句对数据库的查询操作将返回—个ResultSet对象:
ResultSet rs=sql.executeQuery("SELECT * FROM chengjibiao");
ResultSett对象实际上是—个管式数据集,即它是由统一形式的列组织的数据行组成*
ResultSet对象一次只能看到—个数据行,使用next()方法走到下一数据行。获得一行数据后,ResultSet对象可以使用位置索引(第一列使用l,第二列使用2等等)或使用列名称,以便使用getXxx()方法获得字段值。下表1给了出了ResultSet对象的若干方法。
1、JSP连接Oracle8/8i/9i数据库(用thin模式)
步骤:
(1) 加载驱动程序: Class.forName("oracle.jdbc.driver.OracleDriver");
(2) 建立连接: Connection conn= DriverManager.getConnection(url,user,password);
文件 testoracle.jsp
2、JSP连接Sql Server7.0/2000数据库
步骤:
(1) 加载驱动程序: Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
(2) 建立连接: Connection conn= DriverManager.getConnection(url,user,password);
文件 testsqlserver.jsp
3、JSP连接MySQL数据库
步骤:
(1) 加载驱动程序: Class.forName("org.gjt.mm.mysql.Driver");
(2) 建立连接: Connection conn= DriverManager.getConnection(url);
文件 testmysql.jsp
4、JSP连接PostgreSQL数据库
步骤:
(1) 加载驱动程序: Class.forName("org.postgresql.Driver");
(2) 建立连接: Connection conn= DriverManager.getConnection(url,user,password);
文件 testpostgresql.jsp
5、JSP连接DB2数据库
步骤:
(1) 加载驱动程序:Class.forName("com.ibm.db2.jdbc.app.DB2Driver ");
(2) 建立连接:Connection conn= DriverManager.getConnection(url,user,password);
文件 testdb2.jsp
6、JSP连接Informix数据库
步骤:
(1) 加载驱动程序: Class.forName("com.informix.jdbc.IfxDriver");
(2) 建立连接: Connection conn= DriverManager.getConnection(url);
文件 testinformix.jsp
7、JSP连接Sybase数据库
步骤:
(1) 加载驱动程序: Class.forName("com.sybase.jdbc.SybDriver");
(2) 建立连接: Connection conn= DriverManager.getConnection(url, SysProps);
文件 testsybase.jsp
下面有个例子,是从student.mdb读入数据,然后输出到表格(JTable)
源码和数据文件在附件中都有.
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.util.*;
class JTable1 extends JFrame
{
JPanel cp = new JPanel();
JTable jtable1;
JScrollPane jscrp1 = new JScrollPane();
public JTable1()
{
cp = (JPanel)this.getContentPane();
this.setTitle("student result");
this.setSize(500, 200);
cp.setLayout(new FlowLayout());
Connection con;
Statement sql;
ResultSet rs;
DefaultTableModel dtm;
//DefaultTableModel是 TableModel 的一个实现,它使用一个 Vector 来存储单元格的值对象,该 Vector 由多个 Vector 组成。
Vector <Vector> content=new Vector <Vector>();
Vector <String> title=new Vector <String>();
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } //建立桥接器
catch (java.lang.ClassNotFoundException e)
{ e.printStackTrace();}
try
{
con= DriverManager.getConnection("jdbc:odbc:st","meteor","12345");//连接
sql=con.createStatement();//创建SQL语句对象
rs=sql.executeQuery("SELECT * FROM result");//查询
ResultSetMetaData rsmd=rs.getMetaData();
//ResultSetMetaData可用于获取关于 ResultSet 对象中列的类型和属性信息的对象
for(int i = 1; i <= rsmd.getColumnCount(); i++)//getColumnCount()记录条数
title.add(rsmd.getColumnName(i));//获取列名(对象String)
while(rs.next())
{
Vector <String> tmp=new Vector<String>();//一个Vector content包含多个Vector
for(int i = 1; i <= rsmd.getColumnCount(); i++)
tmp.add(rs.getString(i));//获取记录
content.add(tmp);
}
dtm=new DefaultTableModel(content,title);
jtable1 = new JTable(dtm);
jtable1.setRowHeight(20);
jscrp1.getViewport().add(jtable1);//getViewport()滚动窗格的视口子级
cp.add(jscrp1);
con.close();
}
catch (SQLException el)
{ el.printStackTrace();}
}
}
public class JAVADB
{
public static void main(String args[])
{
JTable1 JTable1 = new JTable1();
JTable1.setVisible(true);
}
}
Java数据库连接(初级).rar
(189.61 KB)