Java使用JDBC操作数据库
2017-12-06 18:42
369 查看
Java 使用JSBC操作数据库
JDBC
1、JDBC是开发数据库引用的java API,通过JDBC,使用Java设计的程序能够执行SQL语言、获取结果、在用户界面中显示数据,并且能将所做的改动传回数据库,同时JDBC API可用于分布式异型机环境中国多种数据源之间的交互;
2、一般使用Java开发数据库应用需要用到4个主要的接口:Driver、Connection、Statement、ResultSet,
这些接口都定义在 java.sql 中;
以下是主要步骤:
(1)加载驱动程序:
Class.forName("JDBCDriverClass");
※JDBC驱动的下载:
MySQL JDBC: www.mysql.com/products/connector/
Oracle JDBC: www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
JDBC文件的导入:Eclipse-指定工程-构建路径(bulid path)-Java构建路径-添加外部JAR-应用;
(2)建立连接
Connection connection = DriverManager.getConnection("databaseURL");
①MySql数据库要指定主机名,数据库名;
Connection connection = DriverManger.getConnection("jdbc:mysql://localhost/bookrama","username","password");
②Oracle数据库要指定主机名,数据库监听输入连接请求的端口号,定位数据库的数据库名;
Connection connection = DriverManger.getConnection("jdbc:oracle:thin:@liang.armstrong.edu:1521:orcl","username","password");
③Access数据库要先在Windows下的ODBC数据管理器创建一各ODBC数据源,在创建Connection对象:
Connection connection = DriverManager.getConnection("jdbc:odbc:ExampleMDBDSource");
(3)创建语句
Statement statement = connection.createStatement();
Connection对象是Java程序与数据库的连接通道,Statement对象时通道上的信息交换器;
(4)执行语句
执行更新操作:ResultSet resultSet = statement.executeUpdate("QueryString");
执行查询操作:ResultSet resultSet = statement.executeQuery("QueryString");
(5)处理ResultSet
while(resultSet.next()){
String data1 = resultSet.getString(1);
int data2 = resultSet.getInt(2);
float data3 = resultSet.getFloat(3);
}
//假定数据表有三个字段data1、data2、data3,使用ResultSet相应的getX(index)方法获取,index从1开始;
可以使用ResultSetMete获取数据表的列行信息,详见37.3;
可以使用DatabaseMetaData获取数据库的相关信息,详见37.3;
(6)关闭连接
connection.close();
示例代码:
[java] view
plain copy
public static void main(String[] args) throws SQLException ,ClassNotFoundException{
Class. forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/bookrama","root","root");
Statement statement = connection .createStatement();
ResultSet resultSet = statement .executeQuery("select isbn,author,title,price from books" );
while(resultSet .next()){
String isbn = resultSet .getString(1);
String author = resultSet.getString(2);
String title = resultSet.getString(3);
float price = resultSet .getFloat(4);
System. out.println(isbn +"\t"+ author +"\t" +title + "\t"+price );
}
connection.close();
3、PreparedStatement 预编译SQL语句
[java] view
plain copy
Class.forName("JDBCDriverClass");
Connection connection = DriverManager.getConnection("databaseURL");
PreparedStatement statement = connection.prepareStatement("select id form books where name=? and year>=?");
statement.setString(1,"Alassad");
statement.setInt(2,20);
ResultSet result = statement.executeQuery();
//使用?代替待编译的变量,使用Statement的setX(index,X value)设置变量;
4、CallableStatement 调用记载储存在SQL中的进程和方法;
[java] view
plain copy
//假设 function functionName(firstname varchar2,lastname verchar2);返回与firstname、lastname都匹配的记录个数;
Class.forName("JDBCDriverClass");
Connection connection = DriverManager.getConnection("databaseURL");
//调用SQL进程
CallableStatement statment = connection.prepareCall("{call sampleProcedure(?,?)}");
//调用SQL方法
CallableStatement statment = connection.prepareCall("{?=call functionName(?,?)}");
statement.setString(2,firstaname); //传递参数
statement.setString(3,lastname);
statement.registerOutParameter(1,Types.INTEGER); //注册返回参数
statement.execute();
int result = statement.getInt(1);
获取元数据
1、获取数据库相关信息 DatabaseMetaData
[java] view
plain copy
Class.forName("JDBCDriverClass");
Connection connection = DriverManager.getConnection("databaseURL");
DatabaseMetaData dbMetaData = connection.getMetaData();
String str =dbMetaData.getURL();
dbMetaData.getUserName();
dbMetaData.getDataProductName();
dbMetaData.getDriverName();/
//DatabaseMetaData可获取的字段列表详见Java技术文档;
2、结果集元数据 ResultSetMetaData
[java] view
plain copy
Statement statment = connection.createStatament();
ResultSet resultSet = statement.executeQuery("queryString");
ResultSetMetaData rsMetaData= connection.getMetaData();
for(int i=1;i<rsMetaData .getColumnCount();i++ )
System.out.printf("%-12s\t",rsMetaData .getColumnName(i));
while(resultSet.next()){
for(int i=1;i<rsMetaData.getColumnCount();i++)
System.out.printf("%-12s\t",resultSet.getObject(i));
}
JDBC
1、JDBC是开发数据库引用的java API,通过JDBC,使用Java设计的程序能够执行SQL语言、获取结果、在用户界面中显示数据,并且能将所做的改动传回数据库,同时JDBC API可用于分布式异型机环境中国多种数据源之间的交互;
2、一般使用Java开发数据库应用需要用到4个主要的接口:Driver、Connection、Statement、ResultSet,
这些接口都定义在 java.sql 中;
以下是主要步骤:
(1)加载驱动程序:
Class.forName("JDBCDriverClass");
※JDBC驱动的下载:
MySQL JDBC: www.mysql.com/products/connector/
Oracle JDBC: www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
JDBC文件的导入:Eclipse-指定工程-构建路径(bulid path)-Java构建路径-添加外部JAR-应用;
(2)建立连接
Connection connection = DriverManager.getConnection("databaseURL");
①MySql数据库要指定主机名,数据库名;
Connection connection = DriverManger.getConnection("jdbc:mysql://localhost/bookrama","username","password");
②Oracle数据库要指定主机名,数据库监听输入连接请求的端口号,定位数据库的数据库名;
Connection connection = DriverManger.getConnection("jdbc:oracle:thin:@liang.armstrong.edu:1521:orcl","username","password");
③Access数据库要先在Windows下的ODBC数据管理器创建一各ODBC数据源,在创建Connection对象:
Connection connection = DriverManager.getConnection("jdbc:odbc:ExampleMDBDSource");
(3)创建语句
Statement statement = connection.createStatement();
Connection对象是Java程序与数据库的连接通道,Statement对象时通道上的信息交换器;
(4)执行语句
执行更新操作:ResultSet resultSet = statement.executeUpdate("QueryString");
执行查询操作:ResultSet resultSet = statement.executeQuery("QueryString");
(5)处理ResultSet
while(resultSet.next()){
String data1 = resultSet.getString(1);
int data2 = resultSet.getInt(2);
float data3 = resultSet.getFloat(3);
}
//假定数据表有三个字段data1、data2、data3,使用ResultSet相应的getX(index)方法获取,index从1开始;
可以使用ResultSetMete获取数据表的列行信息,详见37.3;
可以使用DatabaseMetaData获取数据库的相关信息,详见37.3;
(6)关闭连接
connection.close();
示例代码:
[java] view
plain copy
public static void main(String[] args) throws SQLException ,ClassNotFoundException{
Class. forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/bookrama","root","root");
Statement statement = connection .createStatement();
ResultSet resultSet = statement .executeQuery("select isbn,author,title,price from books" );
while(resultSet .next()){
String isbn = resultSet .getString(1);
String author = resultSet.getString(2);
String title = resultSet.getString(3);
float price = resultSet .getFloat(4);
System. out.println(isbn +"\t"+ author +"\t" +title + "\t"+price );
}
connection.close();
3、PreparedStatement 预编译SQL语句
[java] view
plain copy
Class.forName("JDBCDriverClass");
Connection connection = DriverManager.getConnection("databaseURL");
PreparedStatement statement = connection.prepareStatement("select id form books where name=? and year>=?");
statement.setString(1,"Alassad");
statement.setInt(2,20);
ResultSet result = statement.executeQuery();
//使用?代替待编译的变量,使用Statement的setX(index,X value)设置变量;
4、CallableStatement 调用记载储存在SQL中的进程和方法;
[java] view
plain copy
//假设 function functionName(firstname varchar2,lastname verchar2);返回与firstname、lastname都匹配的记录个数;
Class.forName("JDBCDriverClass");
Connection connection = DriverManager.getConnection("databaseURL");
//调用SQL进程
CallableStatement statment = connection.prepareCall("{call sampleProcedure(?,?)}");
//调用SQL方法
CallableStatement statment = connection.prepareCall("{?=call functionName(?,?)}");
statement.setString(2,firstaname); //传递参数
statement.setString(3,lastname);
statement.registerOutParameter(1,Types.INTEGER); //注册返回参数
statement.execute();
int result = statement.getInt(1);
获取元数据
1、获取数据库相关信息 DatabaseMetaData
[java] view
plain copy
Class.forName("JDBCDriverClass");
Connection connection = DriverManager.getConnection("databaseURL");
DatabaseMetaData dbMetaData = connection.getMetaData();
String str =dbMetaData.getURL();
dbMetaData.getUserName();
dbMetaData.getDataProductName();
dbMetaData.getDriverName();/
//DatabaseMetaData可获取的字段列表详见Java技术文档;
2、结果集元数据 ResultSetMetaData
[java] view
plain copy
Statement statment = connection.createStatament();
ResultSet resultSet = statement.executeQuery("queryString");
ResultSetMetaData rsMetaData= connection.getMetaData();
for(int i=1;i<rsMetaData .getColumnCount();i++ )
System.out.printf("%-12s\t",rsMetaData .getColumnName(i));
while(resultSet.next()){
for(int i=1;i<rsMetaData.getColumnCount();i++)
System.out.printf("%-12s\t",resultSet.getObject(i));
}
相关文章推荐
- java实现使用JDBC-ODBC桥操作数据库。
- [数据库操作]Java中的JDBC的使用方法.
- Java中使用JDBC连接数据库操作的步骤
- Java中使用JDBC操作数据库简单实例
- 在Java的Spring框架的程序中使用JDBC API操作数据库
- JAVA之操作数据库增删改查-JDBC的使用
- java中简述使用JDBC完成数据库操作的基本步骤。
- java使用jdbc操作数据库示例分享
- Java使用JDBC操作数据库
- java 使用策略模式操作JDBC数据库
- java 演示使用jdbc-odbc桥连接的方式操作数据库 向数据库中添加数据
- Java - 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?
- [数据库操作]Java中的JDBC的使用方法.
- JAVA使用JDBC操作数据库
- 使用JDBC操作数据库
- java操作数据库的演进jdbc-datasource-hibernate-spring
- Java 中使用JDBC连接数据库例程与注意事项
- Java 中使用JDBC连接数据库例程与注意事项
- Java 使用jdbc连接数据库
- Java使用jdbc操作Mysql数据库