成绩管理系统——数据库编程(客户端)

本文是基于成绩管理系统的服务器端,嵌入式SQL利用了SQL语言具有很强的查询处理能力,JAVA等高级语言具有很强逻辑表达能力,用到的软件为eclipse和pgAdmin4,实现客户端是基于上一篇文章成绩管理系统——数据库编程(服务器端)

数据库编程分为数据库客户端编程与数据库服务器端编程,在完成任务之前需要对控制语句的格式、函数编程 ,存储过程编程,游标编程、触发器以及嵌入式SQL编程等的知识有所了解。

嵌入式SQL编程

JDBC程序访问数据库的步骤

 1)加载驱动Class.forName("驱动名字")

2)建立连接 connection con= DriverManager.getConnection(URL,userName,passWord);

3)创建Statement对象    Statement stmt = conn.createStatement();

4)执行SQL语句

分为查询和更新操作,查询又分为静态查询和动态查询(SQL语句传递参数prepareStatemen

executeQuery():返回语句执行后的单个结果集的,所以通常用于select语句;

executeUpdate()返回值是一个整数,指示受影响的行数(可以用于updateinsertdelete语句)

例如:

String sql = "INSERT INTO public.student (sid, sname,  major, phone)"

                  + " VALUES ('2017001', '张山,'土木工程','13602810001')";

stmt.executeUpdate(sql);

5)ResultSet在用到查询语句时我们要保存结果集

执行增删改的时候我们不需要返回结果,但是用查询语句时需要获得结果集。

String sql = "SELECT id, name, age FROM company";

ResultSet rs = stmt.executeQuery(sql);

ResultSet对象它被称为结果集,本质上是内存中用于存储多条记录的游标,通过一套getXXX方法提供了对这些行中数据的访问,用while和next()方法得到每一行数据

1ResultSet.next()将游标由当前位置移动到下一行;

2ResultSet.getString(String columnName) 获取指定字段的String类型值;

3ResultSet.getString(int columnIndex) 获取指定索引的String类型值;

4ResuleSet.previous()将游标由当前位置移动到上一行。


 6)关闭连接

rs.close();        //关闭结果集对象

stmt.close();    //关闭执行对象

conn.close();     //关闭连接对象

客户端

首先在PostgreSQL官网https://jdbc.postgresql.org/下载JDBC驱动程序postgresql-xx.x.x.jar

针对成绩管理系统数据库应用访问,编写Java应用程序实现成绩查询功能,即输入课程名、教师名,查询该班学生成绩表输出。

在Eclipse下使用JDBC连接数据库,做如下配置

之后是Java程序,按嵌入式SQL编程的步骤顺序编写就行

由于在执行数据库有关操作时可能发生异常,我们需要用try{}catch{}语句进行处理

package ***;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

public class Main {//注意修改包名和主类名

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		String url="jdbc:postgresql://localhost:5432/GradeDB";//指明连接的数据库为GradeDB
		//回想一下自己数据库的名字密码
		String name="***";
		String pas="***";
		Connection conn;
		try {
			Class.forName("org.postgresql.Driver");//加载驱动
			conn = DriverManager.getConnection(url,name,pas);//建立连接
			
			System.out.println("请输入课程名:");
			String cname=scan.next();
			
			Statement stmt=conn.createStatement();
			String sql="SELECT s.sid,s.sname,g.score,g.note\n"
					+ "FROM grade as g\n"
					+ "JOIN course as c ON g.cid = c.cid\n"
					+ "JOIN student as s ON g.sid = s.sid\n"
					+ "WHERE c.cname = '"+cname+"'\n"
					+ "ORDER BY g.score DESC";
			ResultSet rs=stmt.executeQuery(sql);
			
			System.out.println("查询结果为:");
			while(rs.next()) {
				//由指定字段获取改属性的值
				System.out.println(rs.getString("sid")+"\t"+rs.getString("sname")+
						"\t"+rs.getString("score")+"\t"+rs.getString("note"));
			}
			
			//关闭所有
			rs.close();
			stmt.close();
			conn.close();
			
		} catch (Exception e) {
			System.out.println(e.getClass().getName()+":"+e.getMessage());
			System.exit(0);
		}
		
	}

}
以下是输出结果,按降序排列

百看不如一练,快实践吧~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值