《Java程序设计》第二次作业:MySQL数据库及Java操作MySQL数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013907419/article/details/45752143
【目的】
1.掌握MySQL数据库的使用方法。

2.掌握Java操作MySQL数据库的方法。

【目标】
目标1:MySQL数据库的基本操作,包括MySQL的安装、创建数据库、数据表、增删改查操作(80分)。

目标2:Java操作MySQL数据库,包括基本步骤和具体的编码实现(90分)。

【方法】
1. 遇到问题,想办法解决问题。有智慧=找原因+想办法。充分利用百度、Google进行搜索。

2. 先达成初步目标,再逐步深入、凝练、总结。

【作业要求】
1.MySQL数据库的基本操作,包括如下两个工作:

(1)在MySQL数据库中插入两个文件中的数据(List_Class1.txt, List_Class1_Submit.xls,点击下载)。

(2)利用SQL命令查找所有 出现在“List_Class1”中,未出现在“List_Class1_Submit” 的学生名单,并保存或输出(截图)。

2. Java操作MySQL数据库。

(1)连接作业1中建立的数据库中的相关的表(table),输出到控制台或Java的相关控件(如表格控件)中。

(2)Java语言编程实现数据库的插入、删除、修改某一条或若干条记录。

目标1:MySQL数据库的基本操作,包括MySQL的安装、创建数据库、数据表、增删改查操作

创建数据库:create database class;

选择你所创建的数据库:use class;

(1)在MySQL数据库中插入两个文件中的数据,首先创建两个表(List1,List2)

create table List1(s_nu char(5),s_no char(20),s_name char(8),p_class char(10),s_sex char(2),primary key(s_no));

create table List2(s_no char(20) not null,s_name char(8) not null,s_group char(5) not null,s_address char(100)not null,primary key(s_no));

 再把两个文件中的数据(List_Class1.txt, List_Class1_Submit.xls)使用SQL语言分别插入进这两个表中,结果如图一,图二:

(也可以使用语句 (load data local infile 'G:\java.txt' into table List2 fields terminated by '\t';)进行导入,教程:点击打开链接

图一:

图二:


删除数据库:

先删除表,再删除库,drop table List1; drop table List2; 删除数据库:drop database class;

另外:Truncate:删除数据表中的数据(仅数据表中的数据,不删除表)truncate table 数据表名称

Delete :

删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行)。
删除某一行:Delete from 数据表名称 where 列名称=值;
删除所有行:Delete * from 数据表名称;

修改数据

   update score set s_name="刘翔" where s_no="A00001";


 查询
    select * from  List1;

(2)利用SQL命令查找所有 出现在“List_Class1”中,未出现在“List_Class1_Submit” 的学生名单

利用这两句语句的其中一句都可以:(1)select * from List1 where not exists(select s_no from List2 where s_no=List1.s_no);(2)SELECT * FROM List1 WHERE s_no NOT IN (SELECT s_no FROM List2);

查询结果如图:




从以上两张图可以看出,学号(s_no)在开始时是设置为主键的,为什么当用姓名查询和用学号查询的结果有差异,用姓名查询时,结果不准确,这也是主键的作用。

目标2:Java操作MySQL数据库,包括基本步骤和具体的编码实现。

(1)连接作业1中建立的数据库中的相关的表(table),输出到控制台或Java的相关控件(如表格控件)中。

以下为源代码:

import java.sql.*;
public class JDBCTest {
	public static void main(String[] args){
		// 驱动程序名
		String driver = "com.mysql.jdbc.Driver";

		// URL指向要访问的数据库名scutcs
		// String url = "jdbc:mysql://localhost/student";
		String url = "jdbc:mysql://127.0.0.1:3306/class";

		// MySQL配置时的用户名
		String user = "root"; 

		// MySQL配置时的密码
		String password = "123456";

		try { 
			// 加载驱动程序
			Class.forName(driver);

			// 连续数据库
			Connection conn = DriverManager.getConnection(url, user, password);
			if(!conn.isClosed()) 
				System.out.println("Succeeded connecting to the Database!");
			// statement用来执行SQL语句
			Statement statement = conn.createStatement();

			// 要执行的SQL语句
			String sql = "select * from List1";

			// 结果集
			ResultSet rs = statement.executeQuery(sql);
			System.out.println("----------------------");
			System.out.println("执行结果如下所示:");
			System.out.println("----------------------" );
			System.out.println("s_nu   "+"   s_no   " + "       s_name " + " p_class   " + "    s_sex ");
			System.out.println("-----------------------");

			String name = null;
			while(rs.next()) {

				// 选择s_name这列数据
				name = rs.getString("s_name");

				// 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
				// 然后使用GB2312字符集解码指定的字节数组
				//name = new String(name.getBytes("ISO-8859-1"),"GB2312");
				/*关于这句的,在我的win8系统下不适合,所以不用,不知道在其它系统 下怎么样,
				 * 暂未测试,所以提供一个百度上的解答
				 */
				// 输出结果
				System.out.print(rs.getString("s_nu") + "\t" );
				System.out.print(rs.getString("s_no") + "\t" );
				System.out.print(rs.getString("s_name") + "\t" );
				System.out.print(rs.getString("p_class") + "\t" );
				System.out.println(rs.getString("s_sex") + "\t" );
				
			}
			rs.close();
			conn.close();
		} catch(ClassNotFoundException e) {
			System.out.println("Sorry,can`t find the Driver!"); 
			e.printStackTrace();
		} catch(SQLException e) {
			e.printStackTrace();
		} catch(Exception e) {
			e.printStackTrace();
		} 
	} 
}
List1运行结果:


import java.sql.*;
public class JDBCTest {
	public static void main(String[] args){
		// 驱动程序名
		String driver = "com.mysql.jdbc.Driver";

		// URL指向要访问的数据库名scutcs
		// String url = "jdbc:mysql://localhost/student";
		String url = "jdbc:mysql://127.0.0.1:3306/class";

		// MySQL配置时的用户名
		String user = "root"; 

		// MySQL配置时的密码
		String password = "123456";

		try { 
			// 加载驱动程序
			Class.forName(driver);

			// 连续数据库
			Connection conn = DriverManager.getConnection(url, user, password);
			if(!conn.isClosed()) 
				System.out.println("Succeeded connecting to the Database!");
			// statement用来执行SQL语句
			Statement statement = conn.createStatement();

			// 要执行的SQL语句
			String sql = "select * from List2";

			// 结果集
			ResultSet rs = statement.executeQuery(sql);
			System.out.println("----------------------");
			System.out.println("执行结果如下所示:");
			System.out.println("----------------------" );
			System.out.println("  s_no      "  +  "    s_name " + "  s_group " + "    s_address  ");
			System.out.println("-----------------------");

			String name = null;
			while(rs.next()) {

				// 选择s_name这列数据
				name = rs.getString("s_name");

				// 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
				// 然后使用GB2312字符集解码指定的字节数组
				//name = new String(name.getBytes("ISO-8859-1"),"GB2312");
				/*关于这句的,在我的win8系统下不适合,所以不用,不知道在其它系统 下怎么样,
				 * 暂未测试,所以提供一个百度上的解答
				 */
				// 输出结果
				System.out.print(rs.getString("s_no") + "\t" );
				System.out.print(rs.getString("s_name") + "\t" );
				System.out.print(rs.getString("s_group") + "\t" );
				System.out.println(rs.getString("s_address") + "\t" );
			}
			rs.close();
			conn.close();
		} catch(ClassNotFoundException e) {
			System.out.println("Sorry,can`t find the Driver!"); 
			e.printStackTrace();
		} catch(SQLException e) {
			e.printStackTrace();
		} catch(Exception e) {
			e.printStackTrace();
		} 
	} 
}
List2运行结果:


关于程序中的 //name = new String(name.getBytes("ISO-8859-1"),"GB2312");
/*关于这句的,在我的win8系统下不适合,所以不用,不知道在其它系统 下怎么样,
* 暂未测试,所以提供一个百度上的解答
*/

这段代码解析:点击打开链接
(2)Java语言编程实现数据库的插入、删除、修改某一条或若干条记录。 
以下是程序源代码:
//源代码出自百度,自己加以修改
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import com.mysql.jdbc.Driver;

public class DBConnection { 
	DBConnection db; 
	public static void main(String[] args) { 
		// TODO Auto-generated method stub 

		DBConnection db = new DBConnection(); 
		db.getConn(); 
		try { 
			db.getStmt().execute("insert into mytable values('陈世友','男','1994-07-06','广东湛江')");
		} catch (SQLException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 

	} 
	public Statement getStmt() { 
		Statement stmt = null; 
		try { 
			stmt = getConnDirect().createStatement();
		} catch (SQLException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 

		return stmt; 
	} 

	private Connection getConnDirect() { 
		// TODO Auto-generated method stub 
		return getConn(); 
	}
	public Connection getConn() { 
		Connection conn = null; 
		try { 
			Class.forName("com.mysql.jdbc.Driver"); 
		} catch (ClassNotFoundException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 
		try { 
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/abccs", "root", "123456"); 
		} catch (SQLException e) { 
			// TODO Auto-generated catch block 
			e.printStackTrace(); 
		} 
		if (conn != null) { 
			System.out.println("数据库已经连接上"); 
		} 
		return conn; 
	} 
}

运行结果:(这里选择了另一个数据库来尝试,避免和上面的数据库混乱)

 心得感悟:
/*经过了两天的编写和尝试,作业终于按要求完成了,但是这次的作业让自己收获蛮大的,借用老师的那句话,
 * 学习的目的:不是为了记住知识,而是为了唤醒爱心,引爆智慧。我觉得当你用心去做一件事时,做出来了,
 * 自己不仅仅是感到那种胜利的满足,还有获得了收获知识后的一种新生感;自己这次遇到问题也充分利用了百度,
 * 寻求网上解决遇到的问题,所以把遇到的错误一一解决了,作业也就完成了,有时候,不是不会,而是不敢于去
 * 尝试,没有那个拼的思想,这次我也是按照先达成初步目标,再逐步深入、凝练、总结,而达到作业这个要求的,
 * 我感觉自己这次的最大收获是在上次能够在困难中,一步一步的坚持下,多了一份敢于尝试!
 */


猜你喜欢

转载自blog.csdn.net/u013907419/article/details/45752143