JDBC:java语言操作数据
本质:其实是sun公司官方定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套实现类,提供数据库驱动jar包。
我们可以使用这套接口编程,真正执行的代码是驱动jar包中的实现类
步骤
1导入驱动jar包
2注册驱动
Class.forName("com.mysql.jdbc.Driver");
3获取数据库连接对象 Connection
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/testdb", "test", "123456");
4定义sql
String sql = "select * from user";
5获取执行sql语句对象 Statement
Statement stmt = connection.createStatement();
6执行sql,接收返回结果
ResultSet executeQuery = stmt.executeQuery(sql);
7处理结果
while (executeQuery.next()) {
String a = executeQuery.getString(1);
System.out.println(a);
System.out.println("======");
System.out.println(executeQuery.getString("username"));
String b = executeQuery.getString("password");
System.out.println(b);
}
8释放资源
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
各个对象:
DriverManager:驱动管理对象
Connection:数据库连接对象
Statement:执行sql对象
ResultSet:结果集对象
PreparedStatement:执行sql的对象
Statement和PreparedStatement区别:
1.PreperedStatement可以避免SQL注入的问题。
2.Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement 可对SQL进行预编译,从而提高数据库的执行效率。
3.并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。