这部分也是所谓JDBC、网站数据源的内容,把名字弄得很高深似得,实际上只是Java中对Mysql数据库的增删改查的内容。非常简单,之前写了这么多Mysql的内容,没好好总结一下,实在是不应该。今天就实现一个Java中对Mysql数据库的增删改查,随便带点Java取出当前系统的系统名与系统时间的知识,完成一个还算有点意思的小例子。
一、基本目标
首先,在Mysql数据库中有一张名为testtable的空表,id为自增列,username,class都是文本列,但是class里面都存放数字,也就是整形,我们以后在Java中取出这一列要当作整形处理。

每次执行程序,程序都会向里面的username插入当前的系统名(不会变的)与当前系统的时分秒(会变的),毫秒、年月日就不插入了,因为超出整形的范围,这也不是什么问题,但是为了避免程序过于复杂,就不引入《【Java】自从有了BigInteger,我再也不用担心要处理的数据有多大了》(点击打开链接)的内容了。

二、制作过程<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+MaGiytfPyKOsSmF2YdKqway90015c3Fsyv2+3b/io6yyu8/xYXNwwbS900FjY2Vzc6OsYyPBtL3TU1FMIFNlcnZlcsTH0fmjrLa8ysfX1LT4usO1xKGjsc++ucTHysfIy7zSzqLI7bXExeSxuKOsy+TIu87Sw8e7ucrHvq2zo8q508N3aW5kb3dzwLSx4LPMoaK/qreio6y1q8rHztLDx7u50qq00834yc/PwtTY0ru49m15c3FsLWNvbm5lY3Rvci1qYXZhLTUuMS4zMi5qYXK1xLarzvejrNXiuPa2q8731NpNeXNxbLXEudnN+NLRvq3O3rTTv8m/vMHLo6zA78Pmw7vT0L/nxr3MqLXEsOaxvqOsvs3Su7j2V2luZG93c7Dmsb61xG1zabCy17DOxLz+o6y49867u7nKx834yc/L0dK7z8JteXNxbC1jb25uZWN0b3ItamF2YbDJo6yw5rG+usWyu9bY0qqjrL7Nw7u8+7n9tPrC69C01f3It7u5way908qnsNy1xKGjPC9wPgo8cD4yoaLIu7rzo6zU2sTjtcS5pLPMxL/CvM/Cw+bQwr2o0ru49mxpYs7EvP680KOssNHV4rj2bXlzcWwtY29ubmVjdG9yLWphdmEtNS4xLjMyLmphcrfFvfjIpaOssru90NXiuPbD+9fW0rK/ydLUo6y1q8rHvt3LtdK1xNq7+bG+trzV4tH5xaqjrMSz0Km5q8u+srvV4tH5yfXWwbu5u+HFqrj4yc/D5sTHuPbS0b6t1L3AtNS9sru74dC0tPrC67XEvq3A7cLutcQ8L3A+CjxwPjxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/57/1_9lrjy__.png" alt="\">
3、之后,右击你的工程选择“属性”

4、在Java Build Path的标签页,选择Add JARs...,在lib文件夹中找到刚才放进来的mysql-connector-java-5.1.32.jar,之后点击确定就可以开始愉快地写代码了

5、首先你要在开头引入下面的东西:
import java.sql.*;
import java.text.*;
import java.util.*;
import java.util.Date;
为了能够获取当前的时间,同时下面也使用到ArrayList动态数组,这东西是什么,请翻我之前的《【Java】Java中的Collections类――Java中升级版的数据结构》(点击打开链接),必须在文件头引入import java.util.*;,由于sql类里面同样有Date()这个类,因此必须多加一句import java.util.Date;消除歧义,import java.text.*;同样是为了之后对系统当前的时间处理的时候使用了,不然只能获取从1970年元旦到现在的毫秒数 6、之后写一个数据库链接类Dbcon
class Dbcon {
// 此处连接数据库,独立开一个类,以后操作数据库的每次连接就不用写这么多
public Connection getCon() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
// 其中test是我们要链接的数据库,user是数据库用户名,password是数据库密码。
// 3306是mysql的端口号,一般是这个
// 后面那串长长的参数是为了防止乱码,免去每次都需要在任何语句都加入一条SET NAMES UTF8
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useOldAliasMetadataBehavior=true";
String user = "root";
String password = "root";
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
}
7、之后就是整个程序的核心如何操作数据库: public class JavaDbTest {
public static void main(String[] args) {
//这里是数据库的链接
Connection con = new Dbcon().getCon();
String sql = null;
// 这样能够获取当前操作系统的名字
//数据库插入操作的开始,修改与查询的道理一样,就不做了,请修改下面sql字符串中的sql语句
String username = System.getProperty("os.name");
// 这样能够获取当前的时间,但必须在文件头引入import java.util.*;
// 由于sql类里面同样有Date()这个类,因此必须多加一句import java.util.Date;消除歧义
String classString = new SimpleDateFormat("hhmmss").format(
new Date(System.currentTimeMillis())).toString();
sql = "INSERT INTO testtable(username,class) VALUES ('" + username
+ "','" + classString + "') ";
// 注意:操作数据库的语句Insert into,update与查询数据库的语句select在Java的语句是不同的
// 操作数据库为con.createStatement().execute(sql);
// 查询数据库为rs=con.prepareStatement(sql).executeQuery();且查询结果必须被ResultSet对象rs接住
try {
con.createStatement().execute(sql);
// 弄完之后人走带门
con.close();
} catch (Exception e) {
e.printStackTrace();
}
sql = "select * from testtable";
ResultSet rs = null;
// 这几个存放查询结果的ArrayList一定要放在try-catch的外围,注意变量有效范围
ArrayList idArraylist = new ArrayList();
ArrayList usernameArraylist = new ArrayList();
ArrayList classArraylist = new ArrayList();
try {
rs = con.prepareStatement(sql).executeQuery();
// 这个循环的结果是把整个查询结构读出来
while (rs.next()) {
// 取出各个列打印出来
idArraylist.add(rs.getInt("id"));
usernameArraylist.add(rs.getString("username"));
// 纵使class一列全是数字,但是由于这一列用的是varchar来存储
// 如果要把class当作整形处理,因此不可用rs.getInt,只能先以String取出来再擦写为整形
rs.getString("class");
classArraylist.add(Integer.parseInt(rs.getString("class")));
}
// 弄完之后人走带门
con.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("id username class");
for (int i = 0; i < idArraylist.size(); i++)
System.out.println(idArraylist.get(i) + " "
+ usernameArraylist.get(i) + " " + classArraylist.get(i));
}
}
8、至此,整个程序连起来就是这样的: package test;
import java.sql.*;
import java.text.*;
import java.util.*;
import java.util.Date;
class Dbcon {
// 此处连接数据库,独立开一个类,以后操作数据库的每次连接就不用写这么多
public Connection getCon() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
// 其中test是我们要链接的数据库,user是数据库用户名,password是数据库密码。
// 3306是mysql的端口号,一般是这个
// 后面那串长长的参数是为了防止乱码,免去每次都需要在任何语句都加入一条SET NAMES UTF8
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncodin