JDBC部分代码解释和基本编写规则

原料准备

配置好的idea开发平台、jdbc连接jar包、mysql数据库和sqlyog。
打开idea开发平台,建立一个工程,点击文件,找到工程结构,点击加号,导入jdbc连接jar包,就可以开始使用jdbc连接到mysql数据库了。

JDBC编写的七个步骤

1.加载驱动
2.创建连接
3.编写sql语句
4.得到statement对象
5.执行sql语句
6.处理结果集
7.关闭资源

编写程序之前的准备

在使用idea这个开发平台的时候可以进行一些操作是自己的代码编写速度大大提高,下面我将列举一些非常有用的设置改动。
1.设置鼠标悬浮提示: Editor --> General --> Other --> Show quick documentation on mouse move 勾上,延时500ms即可。
2.显示方法分隔符: Editor --> General --> Appearance --> Show method separators勾上。
3.忽略大小写提示: Editor --> General --> Code Completion --> Match case 去掉这个勾就可以了。
4.自动导包: Editor --> General --> Auto Import --> Java --> Insert imports on paste调整为All,将Add unambiguous imports on the fly 和 Optimize imports on the fly勾选上,自动导包使用起来很舒服,可以解决一些不必要的麻烦。
5.取消单行显示Tabs:Editor --> General --> Editor Tabs --> Show tabs in one row的勾去掉就可以了。
6.设置字体:font,建议字体大小为14号。
7.设置文件编码: Editor --> File Encodings 将所有的编码方式都设置为UTF-8。其中的Transparent native-to-ascii conversion将勾勾上。
8.设置自动编译: Build,Execution,Deployment --> Compiler --> 其中的 Build project automatically 和 Compile independent modules in parallel 进行勾选就可以了。

编写简单的查找程序

首先在建立好的类中编写一个简单的七步曲:
在编写之前在select函数中定义好要用的connection,statement,resultset。
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
1.Class.forName(“com.mysql.jdbc.Driver”);//加载驱动;
2.connection = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/MySQL?useSSL=true&characterEncoding=utf-8&user=root&password=123”);//创建连接;
这一步不会做的可以询问老师或者同学,他的格式是有规则的。
3.String sql = “select * from STU”;编写sql语句,因为我的数据库中表的名称是STU所以直接写;
4.statement = connection.prepareStatement(sql);//获取statement对象
5.resultSet = statement.executeQuery();//执行sql语句
6. while (resultSet.next()) {
String name = resultSet.getString(1);
String sex = resultSet.getString(2);
String no = resultSet.getString(3);
System.out.println(name,sex,no);
}//对结果集进行处理.这个结果集表示我在数据库中的三列数据依次输出
7.关闭资源:
从resultset到connection依次关闭,并且通过判断每个对象的值最后是不是空来异常处理。非空时关闭资源。
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
刚刚的是关闭资源的代码,因为statement对象的处理方法是必须要异常处理的,所以在程序正文的异常处理的finally中编写关闭。
这样简单的查询就做完了,在main函数中进行实例化后进行函数的调用即可。
public static void main(String[] args) {
stuDAO stuDAO = new stuDAO();
//stuDAO.insert();
//stuDAO.update();
//stuDAO.delete();
stuDAO.select();

}这是我的调用代码。
这就完成了基本的查找代码。

进阶

如果按照这样写增删改会很麻烦,所以要把加载驱动和创建连接封装起来
public class DBUtil {
public static Connection getconnection(){
Connection connection=null;
try {
Class.forName(“com.mysql.jdbc.Driver”);
//2创建连接
connection = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/MySQL?useSSL=true&characterEncoding=utf-8&user=root&password=123”);

    } catch (Exception e) {
        e.printStackTrace();
    }

    return connection;
}

}
再把功能性函数设置为静态函数并且封装起来,具体封装步骤如下,首先编写一个bean包创建类把数据库中表的内容进行罗列,具体方法是编写数据元素,使用私有标识:
private String name;
private String sex;
private String no;
然后右键选择generate,选择getter和setter就会自动创建对应方法,接着邮件选择generate选择tostring。编写修改他的构造函数,添加变量为数据库中的元素。
public stu(String name, String sex, String no) {
this.name = name;
this.sex = sex;
this.no = no;
}
在调用中就可以直接调用这三个变量,为后面的list做准备。list主要是用来输出和表示数据库内容的。怎么建立list呢,具体操作方法如下,在select函数第一行添加List list = new ArrayList<>();
系统会自动导入包。使用方法要修改while中输出的内容为:
while (resultSet.next()) {
String name = resultSet.getString(1);
String sex = resultSet.getString(2);
String no = resultSet.getString(3);
stu STU = new stu(name, sex, no);
list.add(STU);
}
这样可以让输出更加直观,list用法也可以作为练习。

增删改

按照查找的select函数进行修改:
public static void update() {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
try {
//1加载驱动
connection = DBUtil.getconnection();
//3.写sql
String sq3 = “update stu set no=‘3’ where no=‘4’”;
statement = connection.prepareStatement(sq3);
//5.执行sql
statement.executeUpdate();
//((PreparedStatement) statement).executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//7关闭资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

}
public static void insert() {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
try {
//1加载驱动
connection = DBUtil.getconnection();
//3.写sql
String sql = “insert into STU(name,sex,no) values(‘张三’,‘男’,‘7’)”;
statement = connection.prepareStatement(sql);
//5.执行sql
statement.executeUpdate();
//((PreparedStatement) statement).executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//7关闭资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

}
public static void delete() {
ResultSet resultSet = null;
PreparedStatement statement = null;
Connection connection = null;
try {
//1加载驱动
connection = DBUtil.getconnection();
//3.写sql
String sql = “delete from stu where no=‘7’”;
statement = connection.prepareStatement(sql);
//5.执行sql
statement.executeUpdate();
//((PreparedStatement) statement).executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
//7关闭资源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
} else if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

发布了9 篇原创文章 · 获赞 2 · 访问量 2072

猜你喜欢

转载自blog.csdn.net/whutwwg/article/details/93768634