java JDBC实验题【实验题1 学生信…

实验题1 学生信息管理函数。

数据库中的信息参考Exp9.1.txt,这些命令用来创建student表,包含学生的学号、姓名、年龄信息。

① 根据学号,可以查询到学生的姓名和年龄;

② 给定学生的学号、姓名、年龄,在表中追加一行信息;

③ 给定学生的学号,可以从表中删除该学生的信息;

[基本要求] 对上面的每一个功能编写相应的函数,并测试。

【实验思想】本题主要通过数据库的建立和数据库的链接进行相应的一些操作,这里使用了SQL Server数据库,用JDBC的数据库思想完成操作。

【实验过程】

1.建立数据库JavaTest,然后在本数据库中建立一张数据表student,在student表中需要用到题目中要求的三个属性列:学号、姓名、年龄,并且将数据通过Excel表导入到数据库中待用。(数据Excel表附在附录中,为本班同学信息)

2.考虑到本次实验的实验内容比较多,于是每一个方法都是通过函数或是类的方式来实现,这里我具体说一下每一个类和实现方法,不作具体代码的详细分析。在开始之前要首先将外部的jar包导入到当前的工程中。

(1)在当前工程下,右键单击“build path”->“configure build path”->“add external jars”,然后选择要导入的jar文件路径,进行导入,若在当前工程下出现了“referenced libraries”,则是导入成功;否则,查看一下什么原因造成了错误。

(2)类和方法的解释

class ConnectionDemo 这个类实现了从java文件到数据库的链接。

package Program01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionDemo {
 private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JavaTest";
 private static final String userName = "sa";
 private static final String passWord = "";
 public ConnectionDemo(){
  try {
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
 public static Connection connected() throws SQLException{
  return DriverManager.getConnection(URL, userName, passWord);
 }
}

class SelectFun 这个类完成了查找操作,Select方法为主要实现方法,其中用到了java.sql.PreparedStatement和记录集(数据库中游标的概念)Resultset来进行查询结果的存储,然后按照顺序输出。

package Program01;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

public class SelectFun {
 public static String sql = null;
 private static java.sql.PreparedStatement statement;
 public SelectFun(){}
 public static void Select(String str,String selectSQL,Connection conn){
  sql = selectSQL;
  try {
   statement = conn.prepareStatement(sql);
   statement.setString(1, str);
   ResultSet rs = statement.executeQuery();
   ResultSetMetaData metaData = rs.getMetaData();
   System.out.print(metaData.getColumnName(1)+"         ");
   System.out.print(metaData.getColumnName(2)+"          ");
   System.out.println(metaData.getColumnName(3)+"   ");
   while(rs.next()){
    String no = rs.getString(1);
    String name = rs.getString(2);
    int age = rs.getInt(3);
    System.out.println(""+no+"   "+name+"   "+age);
   }
   rs.close();
   statement.close();  
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

class InsertFun 实现数据插入操作的类,其中方法Insert为这里的主要操作函数。这里使用java.sql.PreparedStatement代替Statement,可以动态的进行插入操作。

package Program01;

import java.sql.Connection;
import java.sql.SQLException;

public class InsertFun {
 public static String sql = null;
 public static void Insert(String No,String name,int age,String insertSQL,Connection conn){
  sql = insertSQL;
  try {
   java.sql.PreparedStatement statement = conn.prepareStatement(sql);
   statement.setString(1, No);
   statement.setString(2, name);
   statement.setInt(3, age);
   statement.executeUpdate();
   statement.close();
  } catch (SQLException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 }
}

class DeleteFun类实现数据删除操作,和插入操作基本相同,不赘述。

package Program01;

import java.sql.Connection;
import java.sql.SQLException;

public class DeleteFun {
 public static String sql = null;
 private static java.sql.PreparedStatement statement;
 public static void Delete(String No,String deleteSQL,Connection conn){
  sql = deleteSQL;
  sql = "delete from student where Sno = ?";
  try {
   statement = conn.prepareStatement(sql);
   statement.setString(1, No);
   statement.executeUpdate();
   statement.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
调用实现方法和主函数的类以及方法体:

package Program01;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;
import Program01.SelectFun;

public class StudentInfoManage {

// static SelectFun SF = new SelectFun();
 static String sql;
 public static Connection conn;
 public StudentInfoManage(){
  ConnectionDemo connection = new ConnectionDemo();
  try {
   conn = connection.connected();
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
 public static void main(String[] args) {
  StudentInfoManage stuInfoMan = new StudentInfoManage();
  sql = "select * from student where Sno = ?";
  Scanner scannin = new Scanner(System.in);
  System.out.println("请输入你要查询的学生的学号");
  String No = scannin.nextLine();
  SelectFun.Select(No,sql,conn);
  // 查询
  System.out.println("请输入要插入的学生的学号");
  No = scannin.next();
  System.out.println("请输入要插入的学生的姓名");
  String name = scannin.next();
  System.out.println("请输入要插入的学生的年龄");
  int age = scannin.nextInt();
  sql ="insert into student(Sno,Sname,Sage) values(?,?,?)";
  InsertFun.Insert(No, name, age, sql, conn);
  //插入
  sql = "delete from student where Sno = ?";
  System.out.println("请输入要删除的学生的学号");
  No = scannin.next();
  DeleteFun.Delete(No, sql, conn);
  try {
   conn.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
}
 java <wbr>JDBC实验题【实验题1 <wbr>学生信息管理函数】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值