黑马程序员技术交流社区

标题: 分享一道数据库题,大家可以看看 [打印本页]

作者: Fate_stay    时间: 2016-9-29 22:52
标题: 分享一道数据库题,大家可以看看
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;


/**
* 使用QueryRunner实现对分类表(sort)的增删改查操作,现要求如下:
* 1.创建Sort类,有私有属性id(int类型)、sname(String 类型)、parent(String类型)、sdesc(String
* 类型);提供相应的get/set方法和构造方法并重写toString()方法;
* 2.定义添加方法public static void addSort(Sort sort),将sort对象的所有属性添加到数据库表sort中。
* 3.定义更新方法public static void editSort(Sort sort),根据sort对象的sid值修改数据表sort中对应的记录。
* 4.定义查找方法public static List selectSnameByParent(String parent),根据 指定的parent查找数据库表中对应的所有sname值。
* 5.定义删除方法public static void deleteSort(int sid),根据sid删除数据表sort中所对应的记录。
* 6.定义main方法,在main方法中完成对上面方法的测试:
* 其中:
* 6.1 创建Sort对象sort,并给sort对象属性赋值,其中sname为"看电影",parent为"支出",sdesc为:"看《大鱼海棠》电影",
* 传递sort调用添加方法;
* 6.2 更新sort的sid为3,传递sort调用更新方法
* 6.3 调用删除方法,删除数据表sort中sid为8的记录。
* 6.4 调用查询方法,查询出所有parent为“支出”的sname值并在控制台打印输出。
*/
public class Sort {
        private int id;
        private String sname;
        private String parent;
        private String sdesc;
        // 可以将 获取连接 声明成常量
        //private static Connection conn = JDBCUtils.getConnection();
        static QueryRunner qr = new QueryRunner();
        // 定义方法: 将sort对象的所有属性添加到数据库表sort中
        public void addSort(Sort sort) {
                // 创建QueryRunner对象
                QueryRunner qr = new QueryRunner();
               
                String sql = "INSERT INTO sort(sname, parent , sdesc) VALUES (?,?,?)";
                Object[] params = {sort.getSname(), sort.getParent(), sort.getSdesc()};
                try {
                        Connection conn = JDBCUtils.getConnection();
                        int i = qr.update(conn,sql,params);
//                        List<Object[]> list = qr.query(conn,sql,new ArrayListHandler(), params);
//                        for (Object[] objects : list) {
//                                System.out.println(Arrays.toString(objects));
//                        }
                        System.out.println(i);
                        conn.close();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
               

        }

        // 定义方法: 根据sort对象的sid值修改数据表sort中对应的记录
        public void editSort(Sort sort) throws SQLException{
                // 创建QueryRunner对象
                QueryRunner qr = new QueryRunner();
                // 获取连接
                Connection conn = JDBCUtils.getConnection();
                // sql语句
                String sql = "UPDATE sort SET id = ?";
                // 传参数 3 给 sid
                qr.update(conn, sql, 8);
                conn.close();
        }

        // 定义方法: 根据sid删除数据表sort中所对应的记录。
        public void deleteSort(int sid) throws SQLException{
                QueryRunner qr = new QueryRunner();
                Connection conn = JDBCUtils.getConnection();
                String sql = "DELETE FROM sort WHERE id = "+ sid;
                qr.update(conn, sql);
                System.out.println("删除成功!");
                // TODO 每次必须关闭吗?
                conn.close();
        }
       
        // 定义查找方法,根据 指定的parent查找数据库表中对应的所有sname值。
        public List selectSnameByParent(String parent) throws Exception {
                QueryRunner qr = new QueryRunner();
                Connection conn = JDBCUtils.getConnection();
                // 注: 此处的parent写法,要有单引号
                String sql = "SELECT sname FROM sort WHERE parent ='"+parent+"'";
                List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
               
                conn.close();
               
                return list;
        }
        @Override
        public String toString() {
                return "Sort [id=" + id + ", sname=" + sname + ", parent=" + parent + ", sdesc=" + sdesc + "]";
        }

        public int getId() {
                return id;
        }

        public void setId(int id) {
                this.id = id;
        }

        public String getSname() {
                return sname;
        }

        public void setSname(String sname) {
                this.sname = sname;
        }

        public String getParent() {
                return parent;
        }

        public void setParent(String parent) {
                this.parent = parent;
        }

        public String getSdesc() {
                return sdesc;
        }

        public void setSdesc(String sdesc) {
                this.sdesc = sdesc;
        }
}
测试类:
public class PricticeUnitTest {
        public static void main(String[] args) throws Exception {
               
                Sort sort = new Sort();
                sort.setSname("看电影");
                sort.setParent("支出");
                sort.setSdesc("看《大鱼海棠》电影");
               
                Sort sort2 = new Sort();
                sort2.setSname("买东西");
                sort2.setParent("支出");
                sort2.setSdesc("买衣服");
                // 6.1
                sort.addSort(sort);
                sort2.addSort(sort2);
                // 6.2
//                sort.editSort(sort);
                // 6.3
//                sort.deleteSort(8);
                // 6.4
                List<Object[]> list = sort.selectSnameByParent("支出");
                for (Object[] objects : list) {
                        System.out.print(Arrays.toString(objects) + " ");
                }
        }




作者: CreScert    时间: 2016-9-30 23:17
mark一下,mark




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2