通过JDBC访问数据库

使用建立一个Student类,利用数据库来存储多个Student,写完一个方法在main中写一段测试代码,运行以保证目前所做工作的正确性。有以下方法:

  1)add(Student stu):可以向其中增加新的学生,并保存在数据库中

     测试add方法是否正确:用add方法向数据库增加一个新的学生,然后在数据库的图形管理界面中查询,确认是否增加

  2)dispAll():可以显示所有的学生信息

  3)findById(long id):可以按照学号来查找,并显示符合条件的学生信息,查无该人的话显示错误信息

  4)findByName(String name):可以按照姓名查找学生,找到后显示其信息,查无此人显示错误信息

  5)delById(long id):可以按照id删除学生的信息,然后显示找到该人。若查无此人,显示相应的错误信息

  6)sortByXXX:可以按照指定的字段排序,并显示排序后的信息

 1 public class Student {
 2
 3     private long id;
 4     private String name;
 5     private String major;
 6     private String clas;
 7     private double mathScore;
 8     private double osScore;
 9
10     private double javaScore;
11
12     public void setId(long id){
13         this.id=id;
14     }
15     public void setName(String name){
16         this.name=name;
17     }
18     public void setMajor(String major) {
19         this.major = major;
20     }
21     public void setClas(String clas) {
22         this.clas = clas;
23     }
24     public void setMathScore(double mathScore) {
25         this.mathScore = mathScore;
26     }
27     public void setOsScore(double osScore) {
28         this.osScore = osScore;
29     }
30     public void setJavaScore(double javaScore){
31         this.javaScore=javaScore;
32     }
33     public long getId() {
34         return id;
35     }
36     public String getName() {
37         return name;
38     }
39     public String getMajor() {
40         return major;
41     }
42     public String getClas() {
43         return clas;
44     }
45     public double getMathScore() {
46         return mathScore;
47     }
48     public double getOsScore() {
49         return osScore;
50     }
51     public double getJavaScore() {
52         return javaScore;
53     }
54     public String show(){
55         String str=id+"\t"+name+"\t"+major+"\t"+clas+"\t"+mathScore+"\t"+osScore+"\t"+javaScore;
56         return str;
57     }
58 }
  1 import java.sql.ResultSet;
  2 import java.sql.SQLException;
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.Statement;
  6 import java.util.Scanner;
  7 import java.sql.PreparedStatement;
  8
  9 public class StuInfoManage {
 10
 11     //连接数据库
 12     String driver="org.hsqldb.jdbcDriver";
 13     String url="jdbc:hsqldb:hsql://localhost/";
 14     String user="SA";
 15     String pass="";
 16     private Connection conn;
 17     public StuInfoManage() throws ClassNotFoundException{
 18         String sql = "create table if not exists students(id bigint,name varchar(20),";
 19         sql+= "major varchar(10),class varchar(10),math double,os double,java double)";
 20         try {
 21             if(conn!=null) return;//已经初始化
 22             Class.forName("org.hsqldb.jdbcDriver");// 动态加载mysql驱动
 23             conn = DriverManager.getConnection(url,user,pass);//建立和数据库的连接
 24             Statement stmt = conn.createStatement();
 25             stmt.executeUpdate(sql);
 26             stmt.close();
 27         } catch (SQLException e) {
 28             e.printStackTrace();
 29         }
 30     }
 31
 32
 33
 34
 35
 36     public void close() throws SQLException{
 37         if(conn!=null) conn.close();
 38     }
 39
 40
 41
 42
 43
 44     public void add(Student stu){
 45         String sql="insert into students(id,name,major,class,math,os,java)"+"values(?,?,?,?,?,?,?)";
 46         try {
 47             PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
 48             pstmt.setLong(1, stu.getId());
 49             pstmt.setString(2,stu.getName());
 50             pstmt.setString(3,stu.getMajor());
 51             pstmt.setString(4,stu.getClas());
 52             pstmt.setDouble(5,stu.getMathScore());
 53             pstmt.setDouble(6,stu.getOsScore());
 54             pstmt.setDouble(7,stu.getJavaScore());
 55             pstmt.executeUpdate();
 56             pstmt.close();
 57         } catch (SQLException e) {
 58             e.printStackTrace();
 59         }
 60     }
 61
 62
 63
 64
 65
 66     public void delById(long id) {
 67         String sql="delete from students where id="+id;
 68         try {
 69             Statement stmt=conn.createStatement();
 70             stmt.executeUpdate(sql);
 71             stmt.close();
 72         } catch (SQLException e) {
 73             e.printStackTrace();
 74         }
 75     }
 76
 77
 78
 79
 80
 81     public void findById(long id){
 82         String sql="select * from students where id="+id;
 83         try {
 84             Statement stmt=conn.createStatement();
 85             ResultSet rs=stmt.executeQuery(sql);
 86
 87             while(rs.next()){
 88                 long id1=rs.getLong("id");
 89                 String name=rs.getString("name");
 90                 String major=rs.getString("major");
 91                 String clas=rs.getString("class");
 92                 double mathScore=rs.getDouble("math");
 93                 double osScore=rs.getDouble("os");
 94                 double javaScore=rs.getDouble("java");
 95                 Student stu=new Student();
 96                 stu.setId(id1);stu.setName(name);
 97                 stu.setMajor(major);stu.setClas(clas);
 98                 stu.setMathScore(mathScore);stu.setOsScore(osScore);stu.setJavaScore(javaScore);
 99                 System.out.println("学号\t 姓名         专业            班级:\tmath:\t os:\tjava:");
100                 System.out.println(stu.show());
101             }
102             rs.close();
103             stmt.close();
104         } catch (SQLException e) {
105             e.printStackTrace();
106         }
107     }
108
109
110
111
112
113     public void findByName(String name){
114         String sql="select * from students where name=?";
115         try {
116             PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
117             pstmt.setString(1, name);
118             ResultSet rs=pstmt.executeQuery();
119             while(rs.next()) {
120                 long id1=rs.getLong("id");
121                 String name1=rs.getString("name");
122                 String major=rs.getString("major");
123                 String clas=rs.getString("class");
124                 double mathScore=rs.getDouble("math");
125                 double osScore=rs.getDouble("os");
126                 double javaScore=rs.getDouble("java");
127                 Student stu=new Student();
128                 stu.setId(id1);stu.setName(name1);
129                 stu.setMajor(major);stu.setClas(clas);
130                 stu.setMathScore(mathScore);
131                 stu.setOsScore(osScore);
132                 stu.setJavaScore(javaScore);
133                 System.out.println("学号\t 姓名         专业            班级:\tmath:\t os:\tjava:");
134                 System.out.println(stu.show());
135             }
136             if(!rs.next()) {
137                     System.out.println("error");
138             }
139             rs.close();
140             pstmt.close();
141         } catch (SQLException e) {
142             e.printStackTrace();
143         }
144     }
145
146
147
148
149
150
151     public void sort(String course){
152         String sql = "select * from students";
153         try {
154             Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
155             ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
156             rs.last();//移动到最后一行
157             int total=rs.getRow();//得到总行数
158             Student[] stus=new Student[total];
159             int index=0;
160             rs.beforeFirst();//游标指向第一行前
161             while (rs.next()) {
162                 long id1=rs.getLong("id");
163                 String name1=rs.getString("name");
164                 String major=rs.getString("major");
165                 String clas=rs.getString("class");
166                 double mathScore=rs.getDouble("math");
167                 double osScore=rs.getDouble("os");
168                 double javaScore=rs.getDouble("java");
169                 Student stu=new Student();
170                 stu.setId(id1);stu.setName(name1);
171                 stu.setMajor(major);stu.setClas(clas);
172                 stu.setMathScore(mathScore);stu.setOsScore(osScore);stu.setJavaScore(javaScore);
173                 stus[index]=stu;
174                 index++;
175             }
176             courseChoose(stus,course);
177             System.out.println("学号\t 姓名         专业            班级:\tmath:\t os:\tjava:");
178             for(int m=0;m<stus.length;m++){
179                 System.out.println(stus[m].getId() + "\t" + stus[m].getName()+"\t" + stus[m].getMajor() + "\t" + stus[m].getClas()+"\t" +stus[m].getMathScore()+ "\t" + stus[m].getOsScore()+"\t"+stus[m].getJavaScore());// 入如果返回的是int类型可以用getInt()
180             }
181             rs.close();
182             stmt.close();
183         } catch (SQLException e) {
184             e.printStackTrace();
185         }
186     }
187
188
189
190
191     public void courseChoose(Student[] stus,String course){
192         if(course.equals("math")){
193             for(int i = 0 ; i <stus.length-1 ; i++){
194                 for(int j = i+1 ; j < stus.length ; j++){
195                     Student stu=new Student();
196                     if(stus[i].getMathScore() <stus[j].getMathScore()){
197                         stu = stus[i];
198                         stus[i] = stus[j];
199                         stus[j] = stu;
200                     }
201                 }
202             }
203         }
204         else if(course.equals("os")){
205             for(int i = 0 ; i <stus.length-1 ; i++){
206                 for(int j = i+1 ; j < stus.length ; j++){
207                     Student stu=new Student();
208                     if(stus[i].getOsScore() <stus[j].getOsScore()){
209                         stu = stus[i];
210                         stus[i] = stus[j];
211                         stus[j] = stu;
212                     }
213                 }
214             }
215
216         }
217         else if(course.equals("java")){
218             for(int i = 0 ; i <stus.length-1 ; i++){
219                 for(int j = i+1 ; j < stus.length ; j++){
220                     Student stu=new Student();
221                     if(stus[i].getJavaScore()<stus[j].getJavaScore()){
222                         stu = stus[i];
223                         stus[i] = stus[j];
224                         stus[j] = stu;
225                     }
226                 }
227             }
228           }
229         }
230
231
232
233
234         public void dispAll(){
235             String sql = "select * from students";
236             try {
237                 Statement stmt = conn.createStatement();
238                 ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
239                 System.out.println("学号\t 姓名         专业            班级:\tmath:\t os:\tjava:");
240                 while (rs.next()) {
241                     System.out
242                     .println(rs.getLong(1) + "\t" + rs.getString(2)+"\t"
243                             + rs.getString(3) + "\t" + rs.getString(4)+"\t" + rs.getDouble(5)
244                             + "\t" + rs.getDouble(6)+"\t"+rs.getDouble(7));// 如果返回的是int类型可以用getInt()
245                 }
246                 rs.close();
247                 stmt.close();
248             } catch (SQLException e) {
249                 e.printStackTrace();
250             }
251         }
252
253
254
255
256         public void menu(){
257             Long id;
258             String name;
259             String major;
260             String clas;
261             double mathScore;
262             double osScore;
263             double javaScore;
264             Scanner scanner=new Scanner(System.in);
265             System.out.println("1.显示学生信息");
266             System.out.println("2.录入学生信息");
267             System.out.println("3.学号查找学生");
268             System.out.println("4.姓名查找学生");
269             System.out.println("5.删除学生信息");
270             System.out.println("6.排序");
271             System.out.println("0.退出");
272             System.out.print("输入选择(0-6):");
273             switch(scanner.nextInt()){
274             case 1:
275                 dispAll();
276                 menu();
277                 break;
278             case 2:
279                 System.out.print("请输入学号:");
280                 id=scanner.nextLong();
281                 System.out.print("请输入姓名:");
282                 name=scanner.next();
283                 System.out.print("请输入专业:");
284                 major=scanner.next();
285                 System.out.print("请输入班级:");
286                 clas=scanner.next();
287                 System.out.print("请输入mathScore:");
288                 mathScore=scanner.nextDouble();
289                 System.out.print("请输入osScore:");
290                 osScore=scanner.nextDouble();
291                 System.out.print("请输入javaScore:");
292                 javaScore=scanner.nextDouble();
293                 Student stu=new Student();
294                 stu.setId(id);stu.setName(name);
295                 stu.setMajor(major);stu.setClas(clas);
296                 stu.setMathScore(mathScore);stu.setOsScore(osScore);stu.setJavaScore(javaScore);
297                 add(stu);
298                 System.out.println("添加学生信息成功!");
299                 menu();
300                 break;
301             case 3:
302                 System.out.print("请输入你要查找的学生的学号:");
303                 id=scanner.nextLong();
304                 findById(id);
305                 menu();
306                 break;
307             case 4:
308                 System.out.print("请输入你要查找的学生的姓名:");
309                 name=scanner.next();
310                 findByName(name);
311                 menu();
312                 break;
313             case 5:
314                 System.out.print("请输入你要删除的学生的学号:");
315                 id=scanner.nextLong();
316                 delById(id);
317                 System.out.println("删除学生信息成功!");
318                 menu();
319                 break;
320             case 6:
321                 System.out.println("1 math     2 os    3 java");
322                 System.out.println("*************************************************");
323                 System.out.print("请输入选择(1-3):");
324                 int choice=scanner.nextInt();
325                 if(choice==1){
326                     sort("math");
327                 }
328                 else if(choice==2){
329                     sort("os");
330                 }
331                 else if(choice==3){
332                     sort("java");
333                 }
334                 else{
335                     System.out.println("Input error!");
336                 }
337                 menu();
338                 break;
339             case 0:
340                 scanner.close();
341                 break;
342             default:
343                 System.out.println("Input error!");
344                 menu();
345             }
346         }
347
348
349
350
351
352         public static void main(String[] args) throws Exception {
353             StuInfoManage stuinfomanage=new StuInfoManage();
354             stuinfomanage.menu();
355             stuinfomanage.close();
356         }
357     }

原文地址:https://www.cnblogs.com/TimhLiu/p/9245836.html

时间: 2024-10-16 09:00:57

通过JDBC访问数据库的相关文章

项目小结-JDBC访问数据库的基本步骤

JDBC访问数据库的基本步骤: (1)将数据库的JDBC驱动加载到classpath中,在基于javaEE的web应用实际开发过程中, 通常把目标产品的JDBC驱动复制到WEB-INF/lib中 (2)加载JDBC驱动,将其注册到DriverManager中 //Oracle8/8i/9i(thin模式)数据库 Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); //Sql server2005数据库 Clas

java web中Jdbc访问数据库步骤通俗解释(吃饭),与MVC的通俗解释(做饭)

一.Jdbc访问数据库步骤通俗解释(吃饭) 1)加载驱动 Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer”); 2) 与数据库建立连接 Connection ct=DreverManager.getConnection(“jdbc:Microsoft:sqlserver://localhost:1433;DatabaseName=dbUser,”sa”,”sa”); 3) 创建statement对象 语句对象将sql语句发送到相应的数据

JDBC访问数据库的步骤

1.JDBC访问数据库的步骤 1)加载驱动 Class.forName("驱动程序类"): 2)与数据建立连接 String url="jdbc:数据库://ip地址:端口:数据库": String name="数据库用户名": String password="密码"; Connection conn=DriverManager.getConnection(url,name,password); 3)获得SQL语句,执行SQ

javaweb三、JDBC访问数据库

JDBC是J2SE的内容,是由java提供的访问数据库的接口,但没有提供具体的实现方法,需要数据库厂商提供,就是对应的数据库驱动. 这样的好处是可以方便的更换数据库,提高了扩展性.这也是面向接口编程的一个优点. 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.sql.St

java之连接数据库之JDBC访问数据库的基本操作

1.将数据库的JDBC驱动加载到classpath中,在基于JavaEE的web应用实际开发过程中通常要把目标数据库产品的JDBC驱动复制到WEB-INF/lib下. 2.加载JDBC驱动并将其注册到DriverManager中. Oracle数据库 Class.forName("oracle.jdbc.driver.oracleDriver"); SQL数据库 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriv

JDBC访问数据库

一.准备条件 外界条件 在数据库中首先创建表空间 在创建的表中添加数据 代码部分 导入数据库的驱动包(jar) 加载数据库驱动 获取数据库连接 编写sql语句 利用prepareStatement进行预处理 设置参数,参数1代表第几个参数(从1开始),参数2代表参数的值 向数据库发出sql语句进行查询,executeQuery(),查询到结果集resultSet 遍历结果集 释放资源(connection,resultSet,prepareStatement) PrepareStatement的

Spring JDBC 访问数据库

Spring JDBC是Spring所提供的持久层技术,它以一种更直接.更简单的方式使用JDBC API.在Spring JDBC里,用户仅需要做那些必不可杀的事儿,而将资源获取.Statement创建.异常处理.资源释放等繁杂的工作交给Spring. 虽然ORM的框架已经很成熟,但是JDBC灵活直接的特性依旧让它有自己的用武之地. 本节的主要内容:使用JdbcTemplate模板类进行CRUD数据操作.BLOB和CLOB类型数据的操作,支持命名参数绑定NamedParameterJdbcTem

Java基础-JDBC访问数据库

基本步骤: 加载数据库驱动 建立连接 创建SQL语句 执行SQL语句 处理执行结果 释放资源 代码示例: 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 7 import junit.framework.TestCase; 8

JSP中通过JDBC访问数据库

一.步骤介绍 1.通过Class.forName()加载驱动: 2.通过DriverManager.getConnection()获取Conncetion连接对象: 3.创建Statement对象传递sql语句到数据库执行: 4.接收ResultSet查询结果: 5.释放资源. 二.查询案例 public void getData(){ String URL = "jdbc:sqlserver://127.0.0.1:1433;databaseName=news"; Connectio