jdbc编程的基础操作及理解
下面我们先上一段代码 好伐?:
这段代码的主要作用是创建数据库连接、执行查询、更新和关闭数据库连接共计四个功能。
package jdbc;
import java.sql.Connection;
public class ManageJDBC {
private Connection conn=null;//连接对象
private Statement statement=null;
public void getconnection(){//建立连接对象 注册驱动
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//反射 导入 SQLJDBC4.JAR
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=stu";
conn = DriverManager.getConnection(url,"sa","123456");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public ResultSet execute_select(String sql){//执行查询语句的函数 ResultSet获取查询结果
ResultSet rs=null;
try {
Statement statement=conn.createStatement();//Statement表示的是执行SQL语句的JAVA类
rs=statement.executeQuery(sql);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return rs;
}
public int execute_update(String sql){//执行更新语句,返回更新语句影响的结果集行数
int num=0;
try {
Statement statement=conn.createStatement();
num=statement.executeUpdate(sql);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return num;
}
public void close(){//关闭连接
try {
if(statement!=null&&conn!=null){
statement.close();
conn.close();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void main(String[] args) {
ManageJDBC manageJDBC=new ManageJDBC();
manageJDBC.getconnection();
ResultSet rs=manageJDBC.execute_select("select * from stu_1");
try {
while(rs.next()){
System.out.println(rs.getString("name"));
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
manageJDBC.close();
}
}
首先我们要了解步骤
1.连接数据库
2.操作数据库
3.关闭数据库
一、如何连接数据库呢?首先了解Class.forName()适合什么东东?
Class.forName:返回与给定的字符串名称相关联类或接口的Class对象。
他说的什么意思我也看不懂。
那么如何连接呢??主要就是这段代码:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//反射 导入 SQLJDBC4.JAR
String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=stu";
conn = DriverManager.getConnection(url,"sa","123456");
到这里就是建立与数据库的连接了
二、下一步查询数据库
public ResultSet execute_select(String sql){//执行查询语句的函数 ResultSet获取查询结果
ResultSet rs=null;
try {
Statement statement=conn.createStatement();//Statement表示的是执行SQL语句的JAVA类
rs=statement.executeQuery(sql);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return rs;
}
我们首先还是了解相关的一下东西:
ResultSet接口:用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。再ResultSet接口内部有一个指向表格数据行的游标。Statement接口:用于执行静态的sq语句,并返回一个结果对象。Statement接口对象可以通过Connection实例中的createStatement()(就是这个方法可以创建对象)方法获得。
Statement下属的executeQuery(sql)方法:用于执行select语句,该方法返回一个表示查询结果的ResultSet对象。
即---------对照代码
1.用conn.createStatement创建Statement对象
2.执行sql语句
3.返回执行结果rs
下面我们看看更新功能是不是相同的套路
public int execute_update(String sql){//执行更新语句,返回更新语句影响的结果集行数
int num=0;
try {
Statement statement=conn.createStatement();
num=statement.executeUpdate(sql);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return num;
}
套路相同,都是先创建对象,执行语句,返回结果。
不过还是有点不一样,返回值不一样,这个就是所使用的方法的问题了,这里我们罗列一下:
Statement接口的3个常用的执行sql语句的方法
方法名称 | 功能描述 |
---|---|
boolean execuate(String sql) | 执行sql的各种语句,该方法返回一个boolean类型的值,如果值为true,表示执行的sql语句有查询结果,可通过Statement的getResultSet()方法获得查询结果 |
int executeUpdate(String sql) | 用于执行sql中的insert、update、delete语句。该方法返回一个int类型的值,表示数据库中受该sql语句影响的记录条数 |
ResultSet executeQuery | 用于执行sql中的select语句,该方法返回一个表示查询结果的ResultSet对象 |
欧啦~~~~~总的来说,增、删、更新代码差不多
三、关闭数据库
public void close(){//关闭连接
try {
if(statement!=null&&conn!=null){
statement.close();
conn.close();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
1.关闭statement
2.关闭conn
3.关闭manageJDBC
还有个小问题,关闭前为什么要判空?
答:
若程序在执行完第一步(注册驱动)后发生异常,
测试conn和stmt对象还没有被创建,
程序也会进入finaly并调用对象stmt conn的close()方法
此时会报错 空指针异常 ,
为了避免此时的空指针异常,
所以要先判断不为空,再进行关闭