**
JDBC
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
**步骤**
1.加载驱动
2.获得连接
3.写sql语句
4.获得容器
5.执行,获得结果集
6.处理结果集
7.释放资源
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获得连接
String url = "jdbc:mysql://localhost:3306/jiaowu";
String user= "root";
String password= "root";
connection = DriverManager.getConnection(url,user,password);
//3.写sql语句
String sql = "select * from classes";
//4.获得容器
1. statement st= connection.createStatement();
执行时塞值;
2. preparedStatement ps = com.preparedStatement(sql);
预编译:有效防止 sql注入;
在执行前塞值;
//5.执行,获得结果集
1. st.updata(sql);
2.ps.updata();
//6.处理结果集
while(resultSet.next()){
String name = resultSet.getString("class_name");
int num = resultSet.getInt("class_num");
}
//7.释放资源
finally {
try {
try{
if(resultSet != null){
resultSet.close();
}
}finally {
try{
if(statement != null){
statement.close();
}
}finally {
try{
if(connection != null){
connection.close();
}
}finally {
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
SQL注入问题
无非是在参数中设置一些特殊字符,使SQL语句在拼接这些参数的时候因为特殊字符的原因改变了SQL语句原来的规则。
解决方案
使用PreparedStatement 解决SQL注入问题,运行在SQL中参数以 ? 占位符的方式表示。
PreparedStatement解决步骤:
PreparedStatement是Statement的子接口,可以防止sql注入问题。可以通过Connection接口中的prepareStatement(sql)方法获得PreparedStatement的对象。
prepareStatement(String sql) 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
JDBC 是个"低级"接口,也就是说,它用于直接调用 SQL 命令。在这方面它的功能极佳,并比其它的数据库连接 API
易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的
API,这种API在幕后被转换为诸如 JDBC 这样的低级接口。
在关系数据库的"对象/关系"映射中,表中的每行对应于类的一个实例,而每列的值对应于该实例的一个属性。于是,程序员可直接对 Java
对象进行操作;存取数据所需的 SQL 调用将在"掩盖下"自动生成。此外还可提供更复杂的映射,例如将多个表中的行结合进一个 Java 类中。
随着人们对 JDBC 的兴趣日益增涨,越来越多的开发人员一直在使用基于 JDBC
的工具,以使程序的编写更加容易。程序员也一直在编写力图使最终用户对数据库的访问变得更为简单的应用程序。例如应用程序可提供一个选择数据库任务的菜单。任务被选定后,应用程序将给出提示及空白供填写执行选定任务所需的信息。所需信息输入应用程序将自动调用所需的
SQL 命令。在这样一种程序的协助下,即使用户根本不懂 SQL 的语法,也可以执行数据库任务。