一.执行DDL、DML语句
DDL、DML分别表示数据库定义语言、数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法。
代码如下:
public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver");//加载驱动 //获得一个物理会话 Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399"); //得到一个Statement对象 Statement stat=conn.createStatement(); String DDL_sql="create table if not exists tab(tab_id varchar(10) primary key,tab_name varchar(20))"; String DML_sql="insert into tab values('T0002','狗王')"; System.out.println(stat.executeUpdate(DDL_sql));//输出执行DDL语句的返回值 System.out.println(stat.executeUpdate(DML_sql));//输出执行DML语句的返回值 }
结果如下:对于DDL语句返回的是0,对于DML语句返回的是受影响的行数。
二.执行DQL语句
对于查询语句应该使用Statement对象的executeQuery方法代码如下:
Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399"); Statement stat =conn.createStatement(); String DQL_sql="select * from tab"; ResultSet rs=stat.executeQuery(DQL_sql);
得到的是一个ResultSet的结果集。
三.使用PreparedStatement执行SQL语句
一个预处理的Statement对象。代码如下:
package StudyJDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; /** * @ClassName PreparedStatementText * @Author 真正的小明被占用了 * @Date 2018/10/21/021 11:15 * @Version 1.0 */ public class PreparedStatementText { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399"); //创建一个PreparedStatement对象 PreparedStatement perpare=conn.prepareStatement("insert into tab values (?,?)");//对象在创建之初就有了预编译 perpare.setString(1,"T00003");//设置第一个占位符的类型和值 perpare.setString(2,"李武");//设置第二个 perpare.executeUpdate();//执行的还是DML语句所以使用executeUpdate方法 } }
四.查询结果管理集
package StudyJDBC; import java.sql.*; import java.util.ArrayList; /** * @ClassName ReasultSetText * @Author 真正的小明被占用了 * @Date 2018/10/21/021 13:48 * @Version 1.0 */ public class ReasultSetText { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399"); Statement stat=conn.createStatement(); //创建一个结果集接受查询结果 ResultSet rs=stat.executeQuery("select * from tab"); //现在rs结果集有三行三列, rs.next();//第一行 System.out.println(rs.getString("tab_id")); rs.absolute(2);//跳转到第二行 System.out.println(rs.getString("tab_id")); rs.first();//直接回到第一行 System.out.println(rs.getString("tab_id")); rs.close(); } }