zoukankan      html  css  js  c++  java
  • Java JDBC数据库编程

    课程  Java面向对象程序设计 

    一、实验目的

    掌握数据库编程技术

    二、实验环境

    1微型计算机一台 

    2WINDOWS操作系统,Java SDK,Eclipse开发环境,Microsoft SQL Server Management Studio。

    三、实验内容 

    1、设计一个控制台应用程序,实现简单的学生信息管理系统,要求有如下功能:提供一个控制台菜单,实现学生信息的增加学生信息、删除学生信息、修改学生信息、查询指定学生信息、浏览所有学生信息。

    2、学生类要求包含学号、姓名、年龄、成绩属性,学生信息使用数据库存放。

    四、实验步骤和结果

    (一)首先设置数据库表结构

    1、使用SQL Server 2008 建立查询,进行建库建表操作,SQL语句如下:

    create database studbsxl
    USE studbsxl
    CREATE TABLE stuinfo (
      id varchar(20) NOT NULL,//学生学号
      name varchar(20) default NULL,//学生姓名
      age varchar(10) default NULL,//学生年龄
      score varchar(10) default NULL,//学生成绩
      PRIMARY KEY  (id)
    ) 
    insert into stuinfo(id,name,age,score) 
    values(105032013120,'sxl','20','98'),
    (105032013123,'张三','21','90'),
    (105032013125,'李四','22','83'),
    (105032013127,'王五','25','95');

    (二)创建连接工厂类

         1、首先需要加载JDBC驱动

        (1)SQL Server 2008 JDBC 驱动器的安装:首先去官网

    http://www.microsoft.com/zh-cn/download/details.aspx?id=21599下载压缩包,点击下载会有三个文件下载,最主要用到的是sqljdbc_3.0.1301.101_chs.tar.gz,将其解压后是一个sqljdbc_3.0文件夹,在其找到sqljdbc4.jar,接下来把sqljdbc4.jar复制在JAVA的JDK下的lib文件夹中。最后,需要在工程中引入sqljdbc4.jar包,将sqljdbc4.jar复制到Eclipse 的JDBC项目下,执行黏贴命令;选中这个文件并右击,在弹出的快捷菜单中选择Build Path —Add to Build Path命令,将sqljdbc4.jar包与工程关联。

       (2)代码连接方式:

          //装载SQL Server驱动程序 

          Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

          //提供连接URL字符串 

         String url = "jdbc:sqlserver://localhost:1433;DatabaseName=studbsxl";

          //建立数据库连接 

          Connection  con = DriverManager.getConnection(url, user, pwd);

         (String user = "sa";)

         ( String pwd = "sa";)

       其中,可在SQL ServerManagement Studio 中用SQL语句设置用户名和密码,

    登录后:新建查询连接,输入:exec sp_password null,'sa','sa'  --将sa密码改为sa ,前面一个是密码, 后一个是用户名。

    2、创建连接工厂类

      在增、删、改、查的操作中,都需要获取与数据库的连接对象。从软件的可重复性考虑,需要把这一部分封装成一个单独的类,ConnectionFactory类即用来产生Connection对象。其代码(ConnectionFactory.java)清单如下:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    public class ConnectionFactory {
        public Connection getConnection() {
            String user = "sa";
            String pwd = "sa";
            // 设定url
            String url = "jdbc:sqlserver://localhost:1433;DatabaseName=studbsxl";
            Connection con = null;
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            } catch (ClassNotFoundException ce) {
                System.out.println(ce);
            }
            try {
                con = DriverManager.getConnection(url, user, pwd);
            } catch (SQLException ce) {
                System.out.println(ce);
            }
            return con;
        }
    }

    (三)创建关闭连接工具类

          每一步操作完毕后都需要关掉所占资源,在关闭时还需要判断要关闭的对象是否存在,并在调用关闭的方法还需要处理异常。故,需要专门写一个关闭相关连接的工具类(JDBCUtils.java)来解决释放资源问题,代码如下:

    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    public class JDBCUtils {
        public static void close(ResultSet rs, Statement stmt, Connection conn) {
            close(rs);
            close(stmt);
            close(conn);
        }
    
        public static void close(Statement stmt, Connection conn) {
            close(stmt);
            close(conn);
        }
    
        public static void close(Connection conn) {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void close(Statement stmt) {
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void close(ResultSet rs) {
            try {
                if (rs != null) {
                    rs.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    (四)创建操作方法类

     把与数据库进行增、删、改、查的操作都封装于StudentBiz.java中,代码如下:

    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.PreparedStatement;
    
    public class StudentBiz {
        /*** 查询所有数据
         * @throws Exception
         */
        public void readDate() throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            // 得到数据源
            
            // 得到数据连接
            Connection conn = factory.getConnection();
            // 得到语句块
            Statement stmt = conn.createStatement();
            String sqlstr = "select * from stuinfo";//查询所有学生记录
            // 得到结果集
            ResultSet rs = stmt.executeQuery(sqlstr);
            // 编历结果集,显示结果
            System.out.println("**********所有学生的记录如下所示_(bysxl)**********");
            System.out.println("        学号              姓名       年龄       成绩");
            while (rs.next()) {
                System.out.print(rs.getString(1) + "	");
                System.out.print(rs.getString(2) + "	");
                System.out.print(rs.getString(3) + "	");
                System.out.print(rs.getString(4) + "	");
                System.out.println(" ");
            }
            JDBCUtils.close(rs, stmt, conn);
        }
        
        //根据学生姓名来查询
        public void readDateByName(String name) throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            // 得到数据连接
            Connection conn = factory.getConnection();
            // 得到语句块
            Statement stmt = conn.createStatement();
            String sqlstr = "select * from stuinfo where name='" + name + "'";
            // 得到结果集
            ResultSet rs = stmt.executeQuery(sqlstr);
            // 编历结果集,显示结果
            System.out.println("此操作为:查询指定学生信息>>>>>>");
            System.out.println("        学号              姓名       年龄       成绩");
            while (rs.next()) {
                System.out.print(rs.getString(1) + "	");
                System.out.print(rs.getString(2) + "	");
                System.out.print(rs.getString(3) + "	");
                System.out.print(rs.getString(4) + "	");
                System.out.println(" ");
            }
            JDBCUtils.close(rs, stmt, conn);
        }
        //根据学生姓名插入
        public void insertDateByName(String id,String name,String age,
                String score) throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            // 得到数据连接
            Connection conn = factory.getConnection();
            // 拼写sql语句
            String sqlstr = "insert stuinfo(id,name,age,score) values(?,?,?,?)";
            PreparedStatement psmt = conn.prepareStatement(sqlstr);
            psmt.setString(1, id);
            psmt.setString(2, name);
            psmt.setString(3, age);
            psmt.setString(4, score);
            psmt.executeUpdate();
            JDBCUtils.close(psmt, conn);
            System.out.println("此操作为:插入学生信息>>>");
            this.readDate();
        }
       //根据学生姓名更新/修改
        public void updateDateByName(String name) throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            // 得到数据连接
            Connection conn = factory.getConnection();
            // 得到语句块
            Statement stmt = conn.createStatement();
            String sqlstr = "update stuinfo set score=0 where name='" + name
                    + "'";
            stmt.executeUpdate(sqlstr);
            JDBCUtils.close(stmt, conn);
            this.readDateByName(name);
        }
         //根据学生姓名删除
        public void deleDateByName(String name) throws Exception {
            ConnectionFactory factory = new ConnectionFactory();
            // 得到数据连接
            Connection conn = factory.getConnection();
            // 得到语句块
            Statement stmt = conn.createStatement();
            String sqlstr = "delete from stuinfo where name='" + name + "'";
            stmt.executeUpdate(sqlstr);
            JDBCUtils.close(stmt, conn);
            System.out.println("此操作为:删除学生信息>>>");
            this.readDate();
        }
        
    //    public static void main(String[] args){
    //        StudentBiz td = new StudentBiz();
    //        try {
    //            td.deleDateByName("zah");
    //        } catch (Exception e) {
    //            // TODO Auto-generated catch block
    //            e.printStackTrace();
    //        }
    //    }
    }

    (五)创建测试类,编写测试类TestStudentBiz.java 进行增、删、改、查测试操作:

    //编写测试类进行测试:
    public class TestStudentBiz {
        public static void main(String[] args) {
            StudentBiz td = new StudentBiz();
            try {
                //浏览所有学生信息
                td.readDate();
                
                //插入学生信息    
                //td.insertDateByName("105030000000","东方不败", "500", "100");
                
                //删除学生信息
                //td.deleDateByName("东方不败");
                
                //修改学生信息
                //td.updateDateByName("东方不败");
                
                //查询指定学生信息
                //td.readDateByName("沈");
                        
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    (六)调试代码,实验测试结果为:

    1、通过td.readDate();浏览所有学生信息(即初始学生表的数据内容):

     

    2、通过td.insertDateByName("105030000000","东方不败", "500", "100");插入一条学生信息,运行结果如下所示:

     

       相应地,在SQL SERVER数据库的学生表上添加了一条学生记录:

     

    3、通过td.updateDateByName("东方不败");修改一条学生信息的成绩为0,运行结果如下所示:

     

    相应地,在SQL SERVER数据库的学生表上姓名为“东方不败”的学生成绩被修改成功:

     

    4、通过td.deleDateByName("东方不败");删除学生信息,运行结果如下所示:

     

    相应地,在SQL SERVER数据库的学生表上姓名为“东方不败”的学生成绩被删除成功:

     

    5、通过td.readDateByName("sxl");查询学生信息,运行结果如下所示:

     

    五、实验总结

      (一)本次实验按时按量完成。

      (二)加载JDBC驱动的代码连接方式为:

          //装载SQL Server驱动程序 

          Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

          //提供连接URL字符串 

    String url = "jdbc:sqlserver://localhost:1433;DatabaseName=studbsxl";

          //建立数据库连接 

    Connection  con = DriverManager.getConnection(url, user, pwd);

      (三)通过本次实验我对于Java数据库编程以及JDBC数据库连接有了深刻的认识。

      (四)在Java语言中,提供了丰富的类和接口,用于数据库编程,利用它们可以方便地进行数据的访问和处理。

     

  • 相关阅读:
    H5基础浏览器兼容性
    100道iOS面试题
    iOS-SDWebImage使用(转)
    一个区分度很大的iOS面试题
    iOS技术面试08:其他
    iOS技术面试07:第三方框架
    iOS技术面试06:应用程序
    iOS技术面试05:UI控件
    iOS技术面试04:数据存储
    iOS技术面试03:Foundation
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/5040318.html
Copyright © 2011-2022 走看看