首先JDBC是什么?
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
- 实现java数据库连接和用eclipse删除数据库中表数据
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//实现用eclipse删除数据库中表数据
public class BeforeUpdate {
public static void main(String[] args) {
Statement state =null;
Connection con =null;
try {
Class.forName("com.mysql.jdbc.Driver");//1、加载驱动类
con =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//2、建立连接,获得Connection返回值
state =con.createStatement();//3、创建语句
int effect = state.executeUpdate("delect from user_name");//4、执行语句
if(effect>0){//5、处理结果
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
} catch (Exception e) {
e.printStackTrace();
}finally {//6.释放资源
if (state != null) {//判断一下是否为空,防止报空指针异常
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
- 这个方法每次执行都需要重新写一次程序,重新修改程序,是否可以把程序封装起来,写成一个方法,然后实现只输入sql语句,就可以用ecilpse进行操作数据库,增加代码的复用率。
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//将上述方法进行封装
public class BeforeUpdate {
public static boolean upd(String sql) {
Statement state =null;
Connection con =null;
try {
Class.forName("com.mysql.jdbc.Driver");//1、加载驱动类
con =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//2、建立连接,获得Connection返回值
state =con.createStatement();//3、创建语句
int effect = state.executeUpdate(sql);//4、执行语句
if(effect>0){//5、处理结果
return true;
}
} catch (Exception e) {
e.printStackTrace();
}finally {//6.释放资源
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return false;
}
public static void main(String[] args) {
String sql ="delect from user_name";
if(upd(sql)) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}
}
- 使用ecilpse实现数据库的查询
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class BeforeSelect {
public static void main(String[] args) {
ResultSet resultSet=null;
Statement statement =null;
Connection connection =null;
try {
Class.forName("com.mysql.jdbc.Driver");//1、加载驱动
connection =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");//2、建立连接
statement =connection.createStatement();//3、创建语句
resultSet= statement.executeQuery("select*from User_name");//4、执行语句
while(resultSet.next()) {//5、操作结果
String id = resultSet.getString("id");//可以使用getString,和getNString两种方法,但是getNString只适合NCHAR、NVARCHAR、LONGNVARCHAR的字段,不是这些字段会报错。
String name = resultSet.getString("name");
System.out.println(id+":"+name);
}
} catch (Exception e) {
e.printStackTrace();
}finally {//6、释放资源
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
- 同样对上述方法进行封装:让他好操作一些,增加代码的复用率,让代码更精简。
- 其实使用上边的封装方法是不可以的,因为这个会出现resultset被关闭了,后续代码没法执行,报错,所以我们尝试用以下方式进行封装
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
interface IResultOut{//创建一个接口
void getresult(ResultSet resultSet);
}
public class BeforeSelect {
public static void select (String sql,IResultOut iResultOut) {
ResultSet resultSet=null;
Statement statement =null;
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();//创建语句
resultSet= statement.executeQuery(sql);//执行语句
iResultOut.getresult(resultSet);
} catch (Exception e) {
e.printStackTrace();
}finally {//释放资源
if (resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement!=null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
String sql= "select*from User_name";
class Resultout implements IResultOut{
public void getresult(ResultSet resultSet) {
try {
while(resultSet.next()) {//5、操作结果
String id = resultSet.getString("id");//
String name = resultSet.getString("name");
System.out.println(id+":"+name);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
select(sql,new Resultout());
}
}