随机数猜测游戏 - 玩家记录

时间:2012-03-13 17:25:36

标签: java database-connection

我正在创建这个随机数猜测游戏,并发现我需要存储用户,用户播放的时间和日期以及他的分数。

这是我写的关于我正在尝试创建的逻辑的代码:

这是连接的代码:

Connection cn=null;
ResultSet rs=null;
Statement stat=null;
Statement statement=null;

插入语句即时使用:

            int ok;
            try
            {
                ok=statement.executeUpdate("INSERT INTO Table1(Player_name,Play_date, Player_score) VALUES("+'"'+username+","+datetime+","+scoretodb+'"'+")");
            }catch(SQLException bleh){}

这是使用的连接功能:

public void setConnection()
    {
        try
        {
            try
            {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                cn=DriverManager.getConnection("jdbc:odbc:db1");
                stat=cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
                rs=stat.executeQuery("Select Player_name,Play_date,Player_score from Table1");
                rs.next();
            }catch(ClassNotFoundException cnfe){}
        }catch(SQLException sqle){}
    }

我在这里尝试的逻辑是,在每个按钮上单击我为了将新记录写入我的数据库而创建的按钮,其中包含以下字段:

Player_name, Play_date, Play_score

显然需要球员的用户名,比赛日期和时间以及他/她的分数。

但是当我执行上面提到的查询(代码),然后单击分配用于编写新记录的按钮时,按钮类型会粘在面板上(这显然是一个错误的标志,我仍然在想什么样的它可能是)并且数据库没有我输入的值。顺便说一句,我的数据库已经连接到我的程序。用户名来自JTextField = txtuser,日期/时间来自以下代码:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    //get current date time with Date()
    Date date = new Date();

用户的得分来自userscore = Integer

如何让它在我的数据库中写入新记录?这可能与我在这个问题上提供的代码有关吗?

1 个答案:

答案 0 :(得分:2)

对于初学者来说,你不应该忽略像你一样的异常:

       }catch(ClassNotFoundException cnfe){}
    }catch(SQLException sqle){}

尝试这样的事情:

       }catch(ClassNotFoundException cnfe){
           cnfe.printStackTrace();
       }
    }catch(SQLException sqle){
        sqle.printStackTrace();
    }

这样,如果try块出现问题,软件至少有机会给你一些反馈。 (请注意,您的程序必须使用'java.exe'(而不是'javaw.exe')运行,以便您可以看到打印到控制台的例外情况。)

此外,按钮按下的事实表明按钮操作处理程序代码正在抛出异常。所以在你的按钮动作处理程序中写一个try / catch块:

        public void actionPerformed(java.awt.event.ActionEvent evt) {
            try
            {
                // your code here
            }
            catch(Throwable t)
            {
                t.printStackTrace();
            }
        }

希望您应该开始看到异常和堆栈跟踪,这通常是隔离问题所在的第一步。