个人理解:原生也就是最初的,基础写法。
接下来看代码块:
用的是Java.sql的包,不要用错包了
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class PreparedStatementDemo {
public static void main(String[] args) {
try {
// 1、引用架包
Class.forName("com.mysql.jdbc.Driver");
// 2、创建数据库连接使用
//双引号那个一般都是比较固定的,只是后面的localhost:3306/demo,分别是本地以及端口号/数据库名称
String url = "jdbc:mysql://localhost:3306/demo";
String user = "root";//登录的账号
String password = "root";//登录的密码
//上面三个String变量其实都是可以直接写到下面来的
Connection stat = DriverManager.getConnection(url, user, password);
//使用SQL语句操作数据库
// 方法1
/*
* String sql ="INSERT INTO demo(id,NAME,PASSWORD) VALUE (?,'王五',1234)";
* PreparedStatement per = stat.prepareStatement(sql);
* per.execute(sql);
*/
// 方法二(占位符)
String sql = "INSERT INTO test(name,password) VALUE (?,?)";
PreparedStatement per = stat.prepareStatement(sql);
/*
* per.setString(1, "赵六");//参数索引是在1开始计算,而不是从0开始计算
* per.setInt(2,123);
*/
// 时间
// per.setDate(3, new java.sql.date(System.currentTimeMillis()));
// 注意传时间值
// 直接可以使用Object代替掉任何类型的参数,但是中文还是要用引号引起来的
//可以使用Object处理参数。
per.setObject(1, "屋子");
per.setObject(2, 34);
// per.setObject(3, new java.sql.date(System.currentTimeMillis()));
System.out.println("成功了吗?");
//per.execute();运行语句,返回是否有结果集。
//per.executeQuery();运行select语句,返回ResultSet结果集。
//使用参数输出一下所操纵的行数。
int connt = per.executeUpdate();//运行insert/update/delete操作,返回更新的行数
System.out.println(”更新”+connt+”数据”);
} catch (ClassNotFoundException e) {
//抛出异常
e.printStackTrace();
} catch (SQLException e) {
//抛出异常
e.printStackTrace();
}
}
}
结果,数据库其实已经更新了
这个密码没有进行加密,所以可以直接显示出来