java使用jdbc对mysql数据库进行操作的步骤和代码
来源:互联网 发布:linux 复制重命名文件 编辑:程序博客网 时间:2024/06/18 18:28
java使用jdbc对mysql数据库进行操作的步骤和代码
前言
java程序通过jdbc对mysql进行连接和操作的步骤,主要按照四个步骤:加载驱动、建立连接、创建声明、执行sql语句后的结果集。
1. 加载驱动
在取得连接之前,需要注册驱动程序。通过调用方法Class.forName,这将显式地加载驱动程序类,以下代码分别加载连接ODBC、MySQL、Oracle、SQLServer的驱动类:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Class.forName("com.mysql.jdbc.Driver");Class.forName("oracle.jdbc.driver.OracleDriver");Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
此处,本程序事例是使用mysql的驱动类:
try{ Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e){ System.out.println("找不到驱动程序类,加载驱动失败!"); e.printStackTrace(); }
建立连接
JDBC URL
JDBC URL 提供了一种标识数据库的方法,可以是相应的驱动程序能识别该数据库并与之建立连接。JDBC URL的标准语法如下所示。它由三部分组成,各部分间用冒号分隔: <协议 jdbc>:<子协议>:<子名称>
- <协议>: JDBC URL 中的协议总是jdbc
- <子协议>: 驱动程序名或数据库连接机制(这种机制可由一个或多个驱动程序支持)的名称。
- <子名称>:包含要连接数据库的名称、用户名、密码等信息。
以下代码分别是JDBC-ODBC桥、MySQL、Oracle、SQLServer的连接URL举例:
jdbc:odbc:TESTjdbc:mysql://localhost/db?user=root&password=123&useUnicode=true&characterEncoding=utf-8jdbc:oracle:thin:@localhost:1521:orcl //"oracle:thin"为连接子协议jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs
取得Connection连接
通过驱动管理类DriverManager下面的getConnection方法获取数据库的连接对象: DriverManager.getConnection(url, username, password)
代码示例
String url="jdbc:mysql://localhost:3306/demo"; String username = "root"; String password = "password"; Connection con = null; try{ con = DriverManager.getConnection(url, username, password); } catch (SQLException se) { System.out.println("数据库连接失败!"); se.printStackTrace(); }
创建声明(Statement)
Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,都作为在给定连接上执行SQL语句的包容器:Statement、PreparedStatement(继承自Statement)和CallableStatement(继承自PreparedStatement)。他们都用于发送特定类型的SQL语句:Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行带或者不带IN参数的预编译SQL语句;CallableStatement对象用于执行对数据库已存储过程的调用。
Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加了处理IN参数的方法;而CallableStatement添加了处理OUT参数的方法。
Statement对象
创建Statement对象
用Connection对象的createStatement方法创建,如下例代码: Statement stmt = con.createStatement();
Statement对象的方法概览
- executeQuery: 用于产生单个结果集的语句,比如select语句。
- executeUpdate: 用于执行insert、update、delete语句以及SQL DL(数据定义语言)语句。executeUpdate的返回值为整数,指受影响的行数,对于
create table
和drop table
等不操作行的语句,返回值为0。 - execute:用于执行返回多个结果集、多个更新计数或两者组合的语句。
源码实例
Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("select * from user"); while(rs.next()){ System.out.println(rs.getString(2)+" "+rs.getString("password")+" " + rs.getString(4)); } ResultSetMetaData rsmd = rs.getMetaData(); System.out.println(rsmd.getColumnCount()+" "+rsmd.getTableName(2)+" "+rsmd.getColumnLabel(1));// int rows = stmt.executeUpdate("insert into user values(2, 'user', 'user','user@qq.com')");// System.out.println(rows); if(rs!=null){ try{ rs.close(); } catch (SQLException e){ e.printStackTrace(); } } if(stmt!=null){ try{ stmt.close(); } catch (SQLException e){ e.printStackTrace(); } }
PreparedStatement
创建及方法
创建:PreparedStatement pstmt = con.prepareStatement(sql)
方法:
pstmt.setString(int, "String")pstmt.setInt(int, int)
示例代码
PreparedStatement pstmt = con.prepareStatement("update user set email=? where username like ?"); pstmt.setString(1,"cde@126.com"); pstmt.setString(2, "admin"); pstmt.executeUpdate(); pstmt.setString(2, "user"); pstmt.executeUpdate(); String[] userName = {"admin","user"}; String[] email = {"admin@163.com", "user@qq.com"}; int len = userName.length; for(int i=0; i<len; ++i){ pstmt.setString(1, email[i]); pstmt.setString(2, userName[i]); int n = pstmt.executeUpdate(); System.out.println(n); // n = 1// pstmt.executeUpdate("create table ...");// System.out.println(n); // n = 0 }
执行sql语句后的结果集
ResultSet 基本处理方法
- ResultSet对象维持一个指向当前行的指针。next()方法返回值为布尔型,true代表当前指向行存在值,false代表没有下一行记录了,结果集已处理完毕。
- ResultSet对象获取列的值,通过getInt(column|column_name)或者getString(column|column_name)
示例代码
ResultSet rs = stmt.executeQuery("select * from user"); while(rs.next()){ System.out.println(rs.getString(2)+" "+rs.getString("password")+" " + rs.getString(4)); }
其他
ResultSetMetaData
代码事例:
ResultSetMetaData rsmd = rs.getMetaData(); System.out.println(rsmd.getColumnCount()+" "+rsmd.getTableName(2)+" "+rsmd.getColumnLabel(1));
参考文档
《开发突击者 Java Web 主流框架整合开发》p65
http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html
- java使用jdbc对mysql数据库进行操作的步骤和代码
- JDBC java对MySQL数据库进行查询操作,并把查询的结果输出
- 使用JDBC对数据库进行CRUD的操作
- Java中使用JDBC连接数据库操作的步骤
- Java通过JDBC 进行MySQL数据库操作
- Java开发中JDBC连接数据库的代码和步骤
- JDBC连接数据库的步骤和代码
- Java对MySQL数据库进行操作【java】
- Jdbc对Mysql数据库的基本操作
- 使用JDBC对MySQL数据库进行增、删、改、查等操作
- 服务器用JDBC对mysql数据库进行操作
- 使用SQLiteDatabase进行数据库操作的步骤
- 完整java开发中JDBC连接mysql或者其他数据库代码和步骤
- Java中使用JDBC操作MySQL数据库
- java使用JDBC操作MYSQL数据库
- JDBC--java链接数据库并对其进行操作
- java对数据库的操作(jdbc)
- 使用jdbc对MySQL数据库进行增删改查
- pushlet原理及例子
- HTML 4.01 快速参考
- TIFF图像文件格式详解
- 工厂模式
- redis主从复制
- java使用jdbc对mysql数据库进行操作的步骤和代码
- ActiveMQ、Spring整合学习
- Linxu环境下如何使用Openssl搭建CA中心签发证书
- button样式
- SwipeBackLayout实现滑动结束当前Activity
- 设计模式-代理模式
- 进程与线程
- dataTable 、dataView、Dataset 区别的经典回答
- 遍历序列恢复二叉树