JDBC代码示例

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCCon {

/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) {
// 数据库连接地址,字符编码一般设置UTF-8根据实际情况而定
String url = "jdbc:mysql://127.0.0.1:3306/bdpf?useUnicode=true&characterEncoding=utf-8";
// 创建数据库连接
Connection conn = null;
// 创建一个Statement实例
Statement st = null;
// 结果集
ResultSet rs = null;
// 数据库用户名
final String userName = "root";
// 数据库密码
final String password = "root";
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 根据地址、用户名、密码获取数据库连接
conn = DriverManager.getConnection(url,userName,password);
// 创建以个Statement
st = conn.createStatement();
// 执行查询语句
rs = st.executeQuery("select * from tbl_base_info");
// 获取查询结果数据,循环打印出列名
ResultSetMetaData rmd = rs.getMetaData();
for (int index = 1;index<rmd.getColumnCount()+1;index++) {
System.out.println(rmd.getColumnName(index));
}
} catch (Exception e) {
// TODO Auto-generated catch block

e.printStackTrace();
} finally{
try {
// 如果结果集实例不为空最后要关闭
if(rs!=null){
rs.close();
}
// 如果Statement实例不为空最后要关闭
if(st!=null){
st.close();
}
// 如果数据库连接仍然存在最后要关闭
if(st!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

/*知识点扩展:
1.本人是以mysql最为例子写的代码需要引入mysql的jar包

2.String url = "jdbc:mysql://127.0.0.1:3306/bdpf?useUnicode=true&characterEncoding=utf-8";
useUnicode=true 说明要使用Unicode编码,如果要指定characterEncoding 那么useUnicode值必须为true

3.Statement 有三种执行sql语句的方法
executeQuery 、executeUpdate 和 execute
其中executeQuery执行查询语句,返回结果集
executeUpdate,执行INSERT,DELETE,UPDATE等语句,返回值是受影响的行数
execute 用于执行返回多个结果集、多个更新计数或二者组合的 sql语句,方法返回值为boolean
示例:
ResultSet rs = stmt.executeQuery("select * from ...") ;
int rows = stmt.executeUpdate("update tableName ...") ;
boolean flag = stmt.execute(String sql) ;

4.要关闭JDBC对象
结果集
声明
和连接
创建时的顺序为 连接、声明、结果集
关闭时的顺序为 结果集 、声明、连接
关闭的最佳时机应该为finally代码内
以保证在try过程中抛出异常,最后finally内的代码仍能执行,避免连接消耗
*/

posted @ 2016-08-16 10:40  马三  阅读(323)  评论(0编辑  收藏  举报