我正在学习Java并刚刚开始使用mysql进行游戏,并且在使用python工作的某些逻辑中遇到了一些问题,而且我在转换时遇到了麻烦。突破了Java中的循环逻辑
我基本上有一个try语句,试图搜索数据库中是否存在记录。如果它确实很好,它会继续前进,但是如果记录不存在,那么它会添加它。这里是我的代码
try
{
PreparedStatement Findstatement;
Findstatement = con.prepareStatement(" SELECT DataMaster_MasterCode FROM Allocation WHERE Master_Code = (?) and date = (?)");
Findstatement.setInt(1, Code);
Findstatement.setString(2, AllocationDate);
ResultSet CodeAll = Findstatement.executeQuery();
int DataMaster_MasterCode;
while (CodeAll.next())
{
DataMaster_MasterCode = CodeAll.getInt("DataMaster_MasterCode");
}
System.out.println("Found allocation " + DataMaster_MasterCode + " already exists for " + Name);
}
catch (Exception e)
{ //Create statements... }
问题是,它一直要到异常,因为DataMaster_MasterCode变量可能不被可能不被初始化。我认为,因为python只是执行代码,所以它在python中工作,但是因为java预编译它,它认为这是一个错误,并跳过。如果变量不是可能未初始化的,我希望它失败并转到catch语句(它创建变量)。
现在它保持失败并且不断创建(复制)条目,因为它永远不会完成查找数据本身的语句。我想过放一个else if语句来检查变量是否为空然后中断,但它对我也不起作用。
请帮助我的逻辑。
由于您正在读取可能尚未初始化的变量('DataMaster_MasterCode'),因此应该不会进行编译。你的代码*真的*看起来像什么?另请注意,Java约定是以小写字母开头的局部变量名称。遵循约定使经验丰富的Java开发人员更容易理解您的代码并查看真正的问题,而不是绊倒那些并不重要的古怪事物。 – erickson 2011-04-26 21:27:22
*“它继续执行异常,因为DataMaster_MasterCode变量可能不会被初始化”* ...不,它不会被初始化。这不是一个例外。 – 2011-04-26 21:28:01
这是我的代码..它不会运行我发布的代码,并直接进入catch部分。我改变了变量的名字,使他们更容易理解它在做什么,但是除此之外它是我的代码。我会修复我的命名对话,我只是意识到我正在使用自己的风格(我会阅读正确的命名)。 – Lostsoul 2011-04-26 21:36:12