目录
PreparedStatement用法:是statement的子类,多用于更新数据
基础:
//第1步:注册驱动 (仅仅做一次)
Class.forName("com.mysql.jdbc.Driver");
//第2步:建立连接(Connection)
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/text", "root", "5920536zj");
//第3步:创建运行SQL的语句对象(Statement)应该是连接器
//两种用法,查询和更新
String sql1 = "select * from student_";
String sql2="delete from student_ where id=2 ";
Statement statement = connection.createStatement();
//第4步:运行语句,连接器开始执行相应的语句
//查询方法
ResultSet resultSet1 = statement.executeQuery(sql1);
//更新方法
int resultSet2 = statement.executeUpdate(sql2);
//第5步:处理运行结果(ResultSet)
while (resultSet1.next()) {
//resultSet.getString() 可以放两种参数,第一是int型的索引,第二种就是你所查询的获得的结果集的列的列名
System.out.println(resultSet1.getString(1));
System.out.println(resultSet2);
}
//第6步:释放资源
resultSet1.close();
statement.close();
connection.close();
PreparedStatement用法:是statement的子类,多用于更新数据
String sql = "insert into student_ values (?,?,?)";
preparedStatement = connection.prepareStatement(sql);
//setInt(1, 10);向你设置的问号的位置添加值
preparedStatement.setInt(1, 10);
preparedStatement.setString(2, "来哦");
preparedStatement.setInt(3, 9);
Properties的设置和应用
//建立信息对象
Properties properties = new Properties();
//建立连接
//class.getResourceAsStream() 获取此包下的资源
properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("JDBC_information.properties"));
//获取信息的方法
String url = properties.getProperty("url");
String name = properties.getProperty("name");
String password = properties.getProperty("password");
//文件中直接写,不要加分号
//url=jdbc:mysql://127.0.0.1:3306/text
//name=root
//password=5920536zj
双引号外面的单引号的作用是:让传入的变量变成字符串
" + name + ":可以看做固定写法,将获取的变量字符转化为常量
String sql = "update student_ set student_name='00000'where student_name='" + name + "'";
比较好的案例:
工具类Util:
package main;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class JdbcUtil {
//打开连接包装
public static Connection getconnection() throws ClassNotFoundException, IOException, SQLException {
//第1步:注册驱动 (仅仅做一次)
Class.forName("com.mysql.jdbc.Driver");
//建立信息对象
Properties properties = new Properties();
//建立连接
//class.getResourceAsStream() 获取此包下的资源
properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("JDBC_information.properties"));
//获取信息的方法
String url = properties.getProperty("url");
String name = properties.getProperty("name");
String password = properties.getProperty("password");
//第2步:建立连接(Connection)
return DriverManager.getConnection(url, name, password);
}
//关闭资源包装
// AutoCloseable 是前面三个类的父类。这里用了多态
public static void clossResulSet(AutoCloseable autoCloseable) {
try {
//判断是否为空
if (autoCloseable != null)
autoCloseable.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
连接数据库:
package main;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class Jdbc_better {
public static void main(String[] args) {
//先定义,防止范围不够
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
//建立连接
connection = JdbcUtil.getconnection();
//写sql相应的语句
String sql = "insert into student_ values (?,?,?)";
preparedStatement = connection.prepareStatement(sql);
//setInt(1, 10);向你设置的问号的位置添加值
preparedStatement.setInt(1, 10);
preparedStatement.setString(2, "来哦");
preparedStatement.setInt(3, 9);
int count = preparedStatement.executeUpdate();
System.out.println("添加了" + count + "条数据");
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
JdbcUtil.clossResulSet(preparedStatement);
JdbcUtil.clossResulSet(connection);
}
}
}