设为首页 加入收藏

TOP

【Mysql】Java中对Mysql数据库的增删改查、Java的System类(一)
2015-07-24 10:22:10 来源: 作者: 【 】 浏览:1
Tags:Mysql Java 中对 数据库 删改 System

这部分也是所谓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
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL:ONDUPLICATEKEYUPDATE用法 下一篇sqlserver、mysql如何获取连接字..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python 数据分析与可 (2025-12-26 21:51:20)
·从零开始学Python之 (2025-12-26 21:51:17)
·超长干货:Python实 (2025-12-26 21:51:14)
·为什么 Java 社区至 (2025-12-26 21:19:10)
·Java多线程阻塞队列 (2025-12-26 21:19:07)