修改用户信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Up {
public static void main(String[] args) {
Statement statement = null; // try语句和finally语句属于不同的代码块,需提升变量的适用范围
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动。
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");// 建立连接
statement = connection.createStatement(); // 创建SQL语句对象
String sql = "update user_info set user_name='admin',password='admin' where user_name='1'";
if (statement.executeUpdate(sql) > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
方法步骤大致与前面的添加和删除一致:
运行结果为:修改成功,然后查看数据库:
查询用户信息
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Query {
public static void main(String[] args) {
Statement statement = null; // try语句和finally语句属于不同的代码块,需提升变量的适用范围
Connection connection = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动。
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");// 建立连接
statement = connection.createStatement(); // 创建SQL语句对象
String sql = "select * from user_info";
resultSet = statement.executeQuery(sql);
// 使用while循环获得查询到的数据
while (resultSet.next()) {
String id = resultSet.getString("id");
String userName = resultSet.getString("user_name");
String password = resultSet.getString("password");
System.out.println(id + "," + userName + "," + password);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null) { // 防止空指针异常
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (statement != null) { // 防止空指针异常
statement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
运行结果:
总结:
1.与添加、删除、修改操作相比,查询操作需要使用到ResultSet对象,释放资源时也需要先释放对应的资源(因为关闭的顺序同样需要遵守后开先关的原则(否则有可能出现异常)类似于栈的思想(先进后出))
2.查询,调用Statement的executeQuery(sql)方法,用于产生单个结果集的语句,该方法会返回一个ResultSet对象。
修改,调用的statement的Statement的executeUpdate(sql)方法,该方法返回的是int值,指受影响的行数(即更新计数)
3.在查询的过程中,有可能是查询表内的多条数据,所以需要while循环遍历所有数据。
resultSet.next()方法就可以指向符合条件的下一个数据,如果下一条数据存在返回true,否则返回false。
4.resultSet.getString()方法的使用是与数据库中表的数据类型相一致的,因为该数据库表中id,user_name,password都是字符串的,如果是数字,则使用getInt()。
5.resultSet调用getString()方法时需要传入表的列名,也可以传入表中列的索引(索引从1开始 ),结果不变
String id = resultSet.getString(1); --------------- String id = resultSet.getString("id");
String userName = resultSet.getString(2); --------------- String userName = resultSet.getString("user_name");
String password = resultSet.getString(3); --------------- String password = resultSet.getString("password");