#1.Statement方法(容易发生数据库注入,不推荐使用)
package com.bjsxt.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
*
* 测试执行SQL语句,以及SQL注入问题
*
*/
public class Demo02 {
public static void main(String[] args) {
//加载驱动类
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//建立连接(连接对象内部其实包含了Socket对象,是一个远程连接。比较耗时,这是Connection对象管理的一个要点)
//真正开发中,为了提高效率,都会使用连接池来管理对象
// Statement方法容易被人入侵数据库,不推荐使用
Connection conn=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc"," 用户名","密码");
Statement stmt =conn.createStatement();
//System.out.println(conn);
// 在数据库里面插入数据
String name ="赵六";
int pwd =6666;
String sql="insert into t_user(username,pwd,regTime) values('"+name+"',"+pwd+",now())";
stmt.execute(sql);
//测试SQL注入
sql="delete from t_user where id=4";/*删除id=3的数据*/
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
#执行结果
#测试PreparedStatement的基本用法
package com.bjsxt.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/*
*
* 测试PreparedStatement的基本用法
* 作者:一只学弱狗
*
*/
public class Demo3 {
public static void main(String[] args) {
//加载驱动类
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
Connection conn=(Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","","");
String sql="insert into t_user(username,pwd) values(?,?)"; //?为占位符
PreparedStatement ps=conn.prepareStatement(sql);
// ps.setString(1, "一只学弱狗"); //参数索引从1开始,而不是0
// ps.setString(2, "123456");
ps.setObject(1, "一只学弱猫");
ps.setObject(2, "123456");
ps.execute();
System.out.println("插入一行记录");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
#执行结果
[1]参考资料,Java300集,高琪;