package testJDBC;
import java.sql.*;
/**
@description JDBC 查询数据库示例
*/
public class JDBCdemo1 {
public static void main(String[] args){
Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
//1.注册数据库驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//加载一个类到内存中,该类中有一静态代码块,该代码块中有注册驱动的代码
//静态代码块伪代码如下:DriverManager.registerDriver( new Driver() )
//2.获取数据库连接
String url = "jdbc:mysql://localhost:3306/" +
"jt_db" +
"?characterEncoding=utf-8";
/**
* jdbc:mysql: 协议名
* localhost:3306 主机地址及端口
* jt_db 数据库名
* ?characterEncoding=utf-8 ?+参数
*/
String user = "root"; //数据库连接用户名
String passWord = "123456"; //数据库连接密码
conn = DriverManager.getConnection(url, user, passWord);
//3.获取传输器
statement = conn.createStatement();
/**
* Statement s = con.createStatement();
* PreparedStatement p = con.preparedStatement();
*
*PreparedStatement是Statement的子类
* 可以使用占位符,是预编译的,批处理比Statement效率高
*
* 例:
* String sql = "update user set password=? where username=?";
* preparedStatement = conn.prepareStatement(sql);
* //preparedStatement.setString(第N个问号,代表的变量);
* preparedStatement.setString(1,password);
* preparedStatement.setString(2,username);
* preparedStatement.executeUpdate();
*
*/
//4.执行sql语句,返回执行结果
String sql = "select * from account";
/**
* executeQuery(); 用于产生单个结果集的语句,被用来执行 SELECT 语句,返回值是一个ResultSet结果集对象,其中包括sql查询的结果
* executeUpdate(); 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,返回一个int值,记录受影响记录行数
*/
resultSet = statement.executeQuery(sql);
//5.处理结果
/**
* ResultSet 结果集对象
* ResultSet 是执行查询类的sql语句后返回的结果集对象 其中包括sql查询的结果
* a.遍历数据行的方法
* next() – 使指向数据行的索引向下移动一行
* b.获取数据的方法
* getInt(int columnIndex)
* getInt(String columnLable)
* getString(int columnIndex)
* getString(String columnLable)
* getDouble(int columnIndex)
* getDouble(String columnLable)
* getObject(int columnIndex)
* getObject(String columnLable)
*/
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
double money = resultSet.getDouble("money");
System.out.println(id + ":" + name + ":" + money);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//6.释放资源
//越晚获取越先释放!!
//最好将释放资源代码放在finally里
if(resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
resultSet = null;
}
}
if(statement!=null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
statement = null;
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null;
}
}
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。