我正在创建这个随机数猜测游戏,并发现我需要存储用户,用户播放的时间和日期以及他的分数。
这是我写的关于我正在尝试创建的逻辑的代码:
这是连接的代码:
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
如何让它在我的数据库中写入新记录?这可能与我在这个问题上提供的代码有关吗?
答案 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();
}
}
希望您应该开始看到异常和堆栈跟踪,这通常是隔离问题所在的第一步。