在上一节已经介绍了如何连接数据库。那么这一节讲如何利用JDBC来执行数据库语句。在利用JDBC执行数据库语句的前提是你已经连接到了数据库。JDBC执行数据库语句主要是用Statement(在java.sql包里)类中的三个方法。Execute()、excutequery()、excuteupdate()。但在使用Statement之前必须要有Connection类。因为要使用Connection类的Createstatement()方法来创建一个Statement。
-Execute()
Execute方法可以执行所有的SQL语句,其返回值为true或false。如果结果为true,则执行的语句是有返回值的(如 SELECT * FROM database_name)。如果结果为false,则执行的语句是没有返回值的(如INSERT、UPDATE、DELETE)。
public void statment1() {
try {
Driver driver = new com.mysql.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/dreamweb";
String user = "root";
String password = "wobeidaohao";
DriverManager.registerDriver(driver);
Properties pro = new Properties();
pro.setProperty("user", user);
pro.setProperty("password", password);
Connection con = DriverManager.getConnection(url, pro);
Statement sta = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("CREATE TABLE TB_JDBC(");
sb.append("classid int PRIMARY KEY AUTO_INCREMENT, ");
sb.append("classname varchar(18) NOT NULL UNIQUE)");
boolean value = sta.execute(sb.toString());
System.out.println(value); //返回false
} catch (SQLException e) {
e.printStackTrace();
}
}
-ExecuteUpdate()
该方法只能执行INSERT、UPDATE 或 DELETE,或者不返回任何内容的 SQL 语句。为什么要和Execute()方法分开呢?因为它的返回值和Execute()方法不一样。它会返回一个INT类型的值。该值描述了数据库语句影响的数据库记录的条数。
public void statment2() {
try {
Driver driver = new com.mysql.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/dreamweb";
String user = "root";
String password = "wobeidaohao";
DriverManager.registerDriver(driver);
Properties pro = new Properties();
pro.setProperty("user", user);
pro.setProperty("password", password);
Connection con = DriverManager.getConnection(url, pro);
Statement sta = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("INSERT INTO TB_JDBC");
sb.append("(classname) ");
sb.append("VALUE('DS1204');");
int value = sta.executeUpdate(sb.toString());
System.out.println(value); // 返回值为1 因为他只添加了一个记录,也就是说只影响了一个记录。
} catch (SQLException e) {
e.printStackTrace();
}
}
-executeQuery
该方法只能执行SELECT语句。该方法的返回值为ResultSet。何为ResultSet?。可以这样理解。executeQuery只能执行SELECT语句。而SELECT是查询语句,必然会返回数据(表)。既然会返回数据。我们就必须进行接收。而在java中ResultSet封装了这个数据。那么如何使用ResultSet呢?我们可以用循环进行遍历。使用ResultSet里的Next()方法和get×××()方法。关于ResultSet的更多方法请阅读这里
public void statment3() {
try {
Driver driver = new com.mysql.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/dreamweb";
String user = "root";
String password = "wobeidaohao";
DriverManager.registerDriver(driver);
Properties pro = new Properties();
pro.setProperty("user", user);
pro.setProperty("password", password);
Connection con = DriverManager.getConnection(url, pro);
Statement sta = con.createStatement();
StringBuffer sb = new StringBuffer();
sb.append("SELECT ");
sb.append("* FROM ");
sb.append("TB_JDBC");
ResultSet value = sta.executeQuery(sb.toString());
while(value.next()){
System.out.println(value.getString("classname"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
到现在我们再来总结一下JDBC的基本用法:
1.注册一个Driver
2.建立一个到数据的连接
3.创建一个Statement
4.执行SQL语句
5.处理结果
6.关闭数据库