• 仓库管理系统总结(1)


    今天比较累了,学到的还蛮多的!趁现在还有点精神,把自己今天做的事总结一下,加深印象,免得以后忘了!

     

    这两天的主要任务是一个仓库管理系统。!

    今天完成了一个查询,一个添加功能!就这两个功能就把我累得够呛了!

     

    个人觉得做类似的这种小项目,关键的要理解的地方就就是JDBC和数据库的连接了,

    本人用的是mysqlMysql的安装就不罗嗦了。

    关键的代码:

     

    PreparedStatement ps = null;

    Connection  ct = null;//定义与数据源得到连接

    ResultSet rs = null;

    Vector rowDatacolumnNames

     

        Class.forName("com.mysql.jdbc.Driver");//加载驱动

    Class.forName("com.mysql.jdbc.Driver").newInstance();//生产相应的Driver实例。

    下面是数据库操作的全部代码

    public void init(String sql)

    {

     if(sql.equals(""))

    {

    sql = "select * from cangku";

    }

    columnNames = new Vector();

    columnNames.add("cid");

    columnNames.add("cName");

    columnNames.add("cAddress");

    columnNames.add("cPid");

    columnNames.add("cbeizhu");

        rowData = new Vector();

    //从数据库中取出行数据

    try {

    //加载驱动

    /Class.forName("org.git.mm.mysql.Driver").newInstance();

    Class.forName("com.mysql.jdbc.Driver");

    Class.forName("com.mysql.jdbc.Driver").newInstance();

    //String url="jdbc:mysql://localhost:3306/store?user=root&password= ";

     

    //ct = DriverManager.getConnection("jdbc:odbc:store","root","");

     

    ct = DriverManager.getConnection

      "jdbc:mysql://localhost:3306/store","root",""); ps = ct.prepareStatement(sql);

    rs = ps.executeQuery();

    while(rs.next())

    {

    Vector yi = new Vector();

    //String text=new String(text.getBytes("ISO-8859-1"),"GBK");

    String text  = rs.getString(1);

    String text1 = new String(text.getBytes("ISO-8859-1"),"GBK");

    yi.add(text1);

    yi.add(rs.getString(2));

    yi.add(rs.getString(3));

    yi.add(rs.getString(4));

    yi.add(rs.getString(5));

    rowData.add(yi);

    }

    catch (Exception e) {

    e.printStackTrace();

    }finally

    {

    if(rs!=null)

    try {

    rs.close();

    if(ps!=null)

    ps.close();

    if(ct!=null)

    ct.close();

    catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

     

     

    }

    在这里将对数据库操作的代码建立在一个独立的类中。

     

    这个类继承了一个AbstactTableModel,

     

    AbstactTableModel 作用:用来接收数据库的操作。

    AbstactTableModel 有必须要实现的三个方法:

    //得到表中共有多少列

    public int getColumnCount()

    //得到共有多少行

    public int getRowCount()

    //得到某一行某一列的具体数据

    public Object getValueAt(int rowIndex, int columnIndex)

    return (String)((Vector)this.rowData.get(rowIndex)).get(columnIndex);

     

    这里先得到某一行的数据 this.rowData.get(rowIndex)

    在将行的数据转换成向量后获得列的数据,因为表中的数据都是字符串的,多以强制转换了。

    如果表中的数据包含int 则不必强制转换。

     

     

    下面是实现的查询功能:

    if(e.getSource() == jb1)//jb1表示查询按钮

    {

    System.out.println("查询数据库!");

    String name = jtf.getText().trim();//从输入框中得到查询得到内容String sql = "select * from cangku where cid = '"+name+"'";//这里是按编号来查询的

    Mymodel my = new Mymodel(sql);//建议一个新的model,重新处理数据库表中信息  在Mymodel中两个构造函数,通过sql来决定调用哪一个

    jt.setModel(my);//更新

    }

     

    下面实现添加功能:

     

     

    点击添加后,弹出一个添加仓库的框,框的布局不多说了。

    框是格外一个类的

    jp1.setLayout(new GridLayout(5,1));

    jp2.setLayout(new GridLayout(5,1));

    两个5行一列的

    this.add(jp1,BorderLayout.WEST);

    this.add(jp2,BorderLayout.CENTER);

    this.add(jp3,BorderLayout.SOUTH);

    在流布局

     

    添加功能要操作数据库。

    public void actionPerformed(ActionEvent e) {

    // TODO Auto-generated method stub

    if(e.getSource() == jb1)//jb1是框上的添加按钮

    {

    //定义好需要的参数

    Connection conn = null;

    Statement stmt = null;

    ResultSet rs = null;

    PreparedStatement pstamt = null;

    try {

    Class.forName("com.mysql.jdbc.Driver");//加载驱动

      Class.forName("com.mysql.jdbc.Driver").newInstance();

    conn = DriverManager.getConnection

    "jdbc:mysql://localhost:3306/store","root",""); 

    String strsql = "insert into cangku values(?,?,?,?,?)";

    pstamt=(PreparedStatement)conn.prepareStatement(strsql);

    //将要插入的数据插进表中

    pstamt.setString(1, jtf1.getText());

    pstamt.setString(2, jtf2.getText());

    pstamt.setString(3, jtf3.getText());

    pstamt.setString(4, jtf4.getText());

    pstamt.setString(5, jtf5.getText());

     

    pstamt.executeUpdate();

    this.dispose();//关闭对话框

    catch (ClassNotFoundException e1) {

    // TODO: handle exception

    e1.printStackTrace();

    }catch(SQLException e2)

    {

    e2.printStackTrace();

    catch (InstantiationException e3) {

    // TODO Auto-generated catch block

    e3.printStackTrace();

    catch (IllegalAccessException e4) {

    // TODO Auto-generated catch block

    e4.printStackTrace();

    }finally

    {

    if(conn!=null)

    try {

    conn.close();

    if(stmt!=null)

    stmt.close();

    if(rs!=null)

    rs.close();

    catch (SQLException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }

    }

    }

    }

     

    程序中不知怎么出现了乱码,配置文件也该了。明天还得继续。

    程序中有什么需要改进,优化的地方,望指教。谢谢!

  • 相关阅读:
    Caliburn Micro 框架 WP8使用研究(二)页面导航
    Windows Phone 8 Fast Resume 快速恢复浅析(二)
    Caliburn Micro 框架 WP8使用研究(一)简介
    当BI迈入云端,分析云为我们带来了什么?
    解读SQL Server 2012中的最新BI功能
    一个典型的BI系统介绍
    SQL Server数据库服务器的负载均衡集群实现方法
    Web数据挖掘在电子商务中的应用
    2012商业智能发展趋势预测
    一个商业智能培训经理眼中的商业智能
  • 原文地址:https://www.cnblogs.com/LLeiFeng/p/2855398.html
Copyright © 2020-2023  润新知