JDBC基本使用步骤
JDBC基本使用步骤
?加载驱动
?获取数据库连接
?获得Statement或其子类对象
?执行Statement语句
?处理返回结果
?关闭Statement
?关闭数据库连接
具体说明:
1、加载驱动
驱动程序下载网址:
http://servlet.java.sun.com/products/jdbc/drivers
通过Class类的forName()方法来加载特定的数据库驱动程序 。如:
//连接Oracle8i/9i 数据库
Class.forName("oracle.jdbc.driver.OracleDriver");
//连接Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 连接MySQL数据库
Class.forName(org.gjt.mm.mysql.Driver);
附:用JDBC/ODBC桥驱动程序连接SQL Server2000
1.单击[开始]-[设置]-[控制面板]-[管理工具]-[数据源(ODBC)].
2.选择[系统DSN]-[添加]-选择[SQL Server]-[完成].
3.在[创建到SQL Server的新数据源]对话框中.[名称:university]-[服务器:和自己的服务器一样,这里是WNIGHT-01C72C40]-[下一步].
4.在[创建到SQL Server的新数据源]对话框中,选择[使用用户输入登录ID和密码的SQL Server验证]-[ID:user/密码:user]-[下一步].
5.更改默认数据库为:[选择默认数据库]-[下一步].
6.单击[完成],然后点击[测试数据源]查测试是否正确.
7.利用数据库URL描述ODBC数据源,然后加载JDBC/ODBC桥驱动程序,如下:
String url = "jdbc:odbc:university?user=user&passowrd=user";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url);
2、获取数据库连接
Connection对象代表与数据库的连接,用DriverManager类的getConnection()方法获取与数据库的连接。此方法需要传入一个定位即将连接的数据库的URL的字符串参数,这个URL由三部分组成:
<protocol>:<subprotocol>:<subname>
其中:
Protocol:协议,总是 jdbc
Subprotocol:子协议,表示数据库连接机制的名称,如:odbc 或 mysql等
Subname:数据库标识。包含数据库服务器的位置的信息:数据库名、用户名、口令等
例如:
获取Oracle的连接:
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn=DriverManager.getConnection(url,user,password);
获取SQLServer的连接:
String url="jdbc:microsoft:sqlserver://localhost:1433;
DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(
url,user,password);
以上也可以写成如下的格式:
String url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=university?user=admin&password=123456";
Connection conn = DriverManager.getConnection(url);
获取MySQL的连接:
String url ="jdbc:mysql://localhost:3306/softforum?
user=soft&password=soft1234";
//testDB为你的数据库名
Connection conn=DriverManager.getConnection(url);
3、创建Statement或子类的对象。
Statement对象允许执行简单的SQL查询。通过Connection对象的createStatement()方法创建一个Statement对象:
Statementstmt = conn.createStatement();
另外还可以产生指定类型和同步值的ResultSet对象:
StatementcreateStatement(intresultSetType,intresultSetConcurrency)
1.resultSetType的值:
ResultSet.TYPE_FORWARD_ONLY:结果集不可回滚
ResultSet.TYPE_SCROLL_INSENSITIVE:可以回滚,但不反映数据库的变化
ResultSet.TYPE_SCROLL_SENSITIVE:可以回滚,并反映数据库的变化
2.resultSetConcurrency的值:
ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库
ResultSet.CONCUR_UPDATABLE:可以用结果集更新数据库
结果集元数据
java.sql包中有两个元数据(MetaData)接口:
DatabaseMetaData
这个接口用来获取关于数据库的信息,如:数据库中所有表格的列表、系统函数、关键字、数据库产品名、数据库支持的JDBC驱动器名等。
ResultSetMetaData
该接口用来获取关于存储在ResultSet对象中列的信息,如:每一列的数据类型、列标题及属性等。
其常用方法:
public int getColumnCount();返回存储在ResultSet对象中列的数目。
public String getColumnName(int column_number);返回指定第column_number列的列名。
public String getColumnTypeName(int column_number);返回特定数据库指定第column_number列的数据类型。
通过调用ResultSet类的getMetaData()方法得到关于该结果集的元数据对象:ResultSetMetaData。
例:
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
public class JDBC_01
{
public static void main(String[] args)
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try
{
//加载SQL Server的驱动,在这里是固定的格式
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//获取SQLServer的数据库连接
String url = "jdbc:microsoft:sqlserver://192.168.0.253:1433;databaseName = j2ee";
//填写数据库的用户名和密码
String user = "user";
String password = "user";
//连接数据库
con = DriverManager.getConnection(url,user,password);
//connect的对象创建Statement允许执行SQL语句
stmt = con.createStatement();
//一条SQL语句
String sql = "select * from contact where fname = '米亚斯多德'";
//执行SQL查询语句,这里查询返回的值给字符串rs,要返回值的SQL语句要用到
//的方法是executeQuery(SQLstatement)
rs = stmt.executeQuery(sql);
//若rs的记录已是记录末,则说明数据库中没有刚才查询的这条记录,则插入之,若
//有这条记录,则显示记录值.
if(!rs.next())
{
sql = "insert contact(fname,password) values('米亚斯多德','1')";
//插入记录不返回值,要用方法executeUpdate(SQLstatement)
stmt.executeUpdate(sql);
}
else
{
//rs的getString(1)返回第一个字段所对应的字符串,以此类推
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
sql = "select * from contact";
rs = stmt.executeQuery(sql);
//查询已不是在记录末
while(rs.next())
{
System.out.println(rs.getString(1));
}
//得到rs的结果集数据元对象
ResultSetMetaData rsmd = rs.getMetaData();
//得到字段(列)的数目
int colCount = rsmd.getColumnCount();
System.out.println("ColumnCount:" + colCount);
//得到并显示出字段名和数据类型
for(int i = 1;i <= colCount;i++)
{
String colName = rsmd.getColumnName(i);
String typeName = rsmd.getColumnTypeName(i);
System.out.println(colName + "\t" + typeName);
}
}
}
catch(Exception e)
{
System.out.println("Error:" + e);
}
finally
{
try
{
//注意关闭建立的数据元对象,连接对象,返回的结果数据对象
stmt.close();
con.close();
rs.close();
}
catch(Exception e)
{
System.out.println("Error:" + e);
}
}
}
}
4、 执行Statement。
Statement对象常用两个方法完成简单的操作:
public ResultSet executeQuery(String sql)方法执行简单的查询,并返回ResultSet对象。
public int executeUpdate(String sql) 方法执行SQL INSERT/UPDATE/DELETE 语句,返回int 值。
例:
String sql = "SECLECT * FROM USER";
String sql2 = "UPDATE user SET password='123456' WHERE name='king'";
ResultSet rs = stmt.executeQuery(sql);
stmt.executeUpdate(sql2);
5、 处理返回结果
ResultSet对象是封闭了返回结果的对象,它提供访问数据的方法。该对象有一个指针,指向数据当前行。初始时指针在第一行之前,next()方法把指针移到下一行。
通过调用getXXX(int column_number)方法得到行中的列数据。XXX指的是列的数据类型如:String, Integer,Date等.
例:
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
While(rs.next())
{
System.out.println(rs.getString(1));
}
6、 关闭Statement。
数据库操作结束后应该关闭数据库操作对象,以释放资源。如:
stmt.close();
7、 关闭数据库连接。
conn.close();
JDBC基本使用步骤
?加载驱动
?获取数据库连接
?获得Statement或其子类对象
?执行Statement语句
?处理返回结果
?关闭Statement
?关闭数据库连接
具体说明:
1、加载驱动
驱动程序下载网址:
http://servlet.java.sun.com/products/jdbc/drivers
通过Class类的forName()方法来加载特定的数据库驱动程序 。如:
//连接Oracle8i/9i 数据库
Class.forName("oracle.jdbc.driver.OracleDriver");
//连接Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 连接MySQL数据库
Class.forName(org.gjt.mm.mysql.Driver);
附:用JDBC/ODBC桥驱动程序连接SQL Server2000
1.单击[开始]-[设置]-[控制面板]-[管理工具]-[数据源(ODBC)].
2.选择[系统DSN]-[添加]-选择[SQL Server]-[完成].
3.在[创建到SQL Server的新数据源]对话框中.[名称:university]-[服务器:和自己的服务器一样,这里是WNIGHT-01C72C40]-[下一步].
4.在[创建到SQL Server的新数据源]对话框中,选择[使用用户输入登录ID和密码的SQL Server验证]-[ID:user/密码:user]-[下一步].
5.更改默认数据库为:[选择默认数据库]-[下一步].
6.单击[完成],然后点击[测试数据源]查测试是否正确.
7.利用数据库URL描述ODBC数据源,然后加载JDBC/ODBC桥驱动程序,如下:
String url = "jdbc:odbc:university?user=user&passowrd=user";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url);
2、获取数据库连接
Connection对象代表与数据库的连接,用DriverManager类的getConnection()方法获取与数据库的连接。此方法需要传入一个定位即将连接的数据库的URL的字符串参数,这个URL由三部分组成:
<protocol>:<subprotocol>:<subname>
其中:
Protocol:协议,总是 jdbc
Subprotocol:子协议,表示数据库连接机制的名称,如:odbc 或 mysql等
Subname:数据库标识。包含数据库服务器的位置的信息:数据库名、用户名、口令等
例如:
获取Oracle的连接:
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn=DriverManager.getConnection(url,user,password);
获取SQLServer的连接:
String url="jdbc:microsoft:sqlserver://localhost:1433;
DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(
url,user,password);
以上也可以写成如下的格式:
String url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=university?user=admin&password=123456";
Connection conn = DriverManager.getConnection(url);
获取MySQL的连接:
String url ="jdbc:mysql://localhost:3306/softforum?
user=soft&password=soft1234";
//testDB为你的数据库名
Connection conn=DriverManager.getConnection(url);
3、创建Statement或子类的对象。
Statement对象允许执行简单的SQL查询。通过Connection对象的createStatement()方法创建一个Statement对象:
Statementstmt = conn.createStatement();
另外还可以产生指定类型和同步值的ResultSet对象:
StatementcreateStatement(intresultSetType,intresultSetConcurrency)
1.resultSetType的值:
ResultSet.TYPE_FORWARD_ONLY:结果集不可回滚
ResultSet.TYPE_SCROLL_INSENSITIVE:可以回滚,但不反映数据库的变化
ResultSet.TYPE_SCROLL_SENSITIVE:可以回滚,并反映数据库的变化
2.resultSetConcurrency的值:
ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库
ResultSet.CONCUR_UPDATABLE:可以用结果集更新数据库
结果集元数据
java.sql包中有两个元数据(MetaData)接口:
DatabaseMetaData
这个接口用来获取关于数据库的信息,如:数据库中所有表格的列表、系统函数、关键字、数据库产品名、数据库支持的JDBC驱动器名等。
ResultSetMetaData
该接口用来获取关于存储在ResultSet对象中列的信息,如:每一列的数据类型、列标题及属性等。
其常用方法:
public int getColumnCount();返回存储在ResultSet对象中列的数目。
public String getColumnName(int column_number);返回指定第column_number列的列名。
public String getColumnTypeName(int column_number);返回特定数据库指定第column_number列的数据类型。
通过调用ResultSet类的getMetaData()方法得到关于该结果集的元数据对象:ResultSetMetaData。
例:
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
public class JDBC_01
{
public static void main(String[] args)
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try
{
//加载SQL Server的驱动,在这里是固定的格式
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//获取SQLServer的数据库连接
String url = "jdbc:microsoft:sqlserver://192.168.0.253:1433;databaseName = j2ee";
//填写数据库的用户名和密码
String user = "user";
String password = "user";
//连接数据库
con = DriverManager.getConnection(url,user,password);
//connect的对象创建Statement允许执行SQL语句
stmt = con.createStatement();
//一条SQL语句
String sql = "select * from contact where fname = '米亚斯多德'";
//执行SQL查询语句,这里查询返回的值给字符串rs,要返回值的SQL语句要用到
//的方法是executeQuery(SQLstatement)
rs = stmt.executeQuery(sql);
//若rs的记录已是记录末,则说明数据库中没有刚才查询的这条记录,则插入之,若
//有这条记录,则显示记录值.
if(!rs.next())
{
sql = "insert contact(fname,password) values('米亚斯多德','1')";
//插入记录不返回值,要用方法executeUpdate(SQLstatement)
stmt.executeUpdate(sql);
}
else
{
//rs的getString(1)返回第一个字段所对应的字符串,以此类推
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
sql = "select * from contact";
rs = stmt.executeQuery(sql);
//查询已不是在记录末
while(rs.next())
{
System.out.println(rs.getString(1));
}
//得到rs的结果集数据元对象
ResultSetMetaData rsmd = rs.getMetaData();
//得到字段(列)的数目
int colCount = rsmd.getColumnCount();
System.out.println("ColumnCount:" + colCount);
//得到并显示出字段名和数据类型
for(int i = 1;i <= colCount;i++)
{
String colName = rsmd.getColumnName(i);
String typeName = rsmd.getColumnTypeName(i);
System.out.println(colName + "\t" + typeName);
}
}
}
catch(Exception e)
{
System.out.println("Error:" + e);
}
finally
{
try
{
//注意关闭建立的数据元对象,连接对象,返回的结果数据对象
stmt.close();
con.close();
rs.close();
}
catch(Exception e)
{
System.out.println("Error:" + e);
}
}
}
}
4、 执行Statement。
Statement对象常用两个方法完成简单的操作:
public ResultSet executeQuery(String sql)方法执行简单的查询,并返回ResultSet对象。
public int executeUpdate(String sql) 方法执行SQL INSERT/UPDATE/DELETE 语句,返回int 值。
例:
String sql = "SECLECT * FROM USER";
String sql2 = "UPDATE user SET password='123456' WHERE name='king'";
ResultSet rs = stmt.executeQuery(sql);
stmt.executeUpdate(sql2);
5、 处理返回结果
ResultSet对象是封闭了返回结果的对象,它提供访问数据的方法。该对象有一个指针,指向数据当前行。初始时指针在第一行之前,next()方法把指针移到下一行。
通过调用getXXX(int column_number)方法得到行中的列数据。XXX指的是列的数据类型如:String, Integer,Date等.
例:
ResultSet rs = stmt.executeQuery("SELECT * FROM user");
While(rs.next())
{
System.out.println(rs.getString(1));
}
6、 关闭Statement。
数据库操作结束后应该关闭数据库操作对象,以释放资源。如:
stmt.close();
7、 关闭数据库连接。
conn.close();