2016-09-08 7 views
1

JFrameおよび一連のテキストフィールドから入力したデータをデータベーステーブルに挿入しようとしています。少量のデータでは可能でしたが、私はこれに多くの問題がありました。行を挿入するときに「データ例外:ゼロ除算」

<pre><code> 
package Vegan; 

import java.sql.Connection; 
import java.sql.DriverManager; 


public class connectionString { 

static Connection connection = null; 

public static Connection getConnection() 
{ 
    try 
    { 
     connection = DriverManager.getConnection("jdbc:ucanaccess://C:/Mo//MyDatabase1.accdb"); 
     System.out.println("---connection succesful---"); 
    } 

    catch (Exception ex) 
    { 
     System.out.println("Connection Unsuccesful"); 
    } 

    return connection; 
} 


</pre></code> 
<pre><code> 
package Vegan; 

import java.sql.*; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.logging.Level; 
import java.util.logging.Logger; 


public class DB { 


private static ResultSet rs = null; 
private static PreparedStatement ps = null; 
private static Connection connection = null; 

public DB() { 
    connection = connectionString.getConnection(); 
} 

public void AddSupplier(String pw, String un, String sn, String cn, String ws, String pa, String city, String pv, String pc) throws SQLException 
{ 
    ps = connection.prepareStatement("INSERT INTO AccountTbl(StorePassword, Username, StoreName, ContactNo, Website, PhysAddress, City, Province, PostalCode) VALUES (?,?,?,?,?,?,?,?,?)"); 


    ps.setString(1, pw); 
    ps.setString(2, un); 
    ps.setString(3, sn); 
    ps.setString(4, cn); 
    ps.setString(5, ws); 
    ps.setString(6, pa); 
    ps.setString(7, city); 
    ps.setString(8, pv); 
    ps.setString(9, pc); 
    ps.executeUpdate(); 
} 

}

<pre><code> 
package Vegan; 

import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JOptionPane; 


public class SupplierReg extends javax.swing.JFrame { 
private Object JOptionpane; 


public SupplierReg() { 
    initComponents(); 
} 

private void btnEnterActionPerformed(java.awt.event.ActionEvent evt) {           

    if ((txtAreaCode.getText().equals("")) || (txtCity.getText().equals("")) || txtContactNo.getText().equals("") 
      || txtPassword.getText().equals("") || txtProvince.getText().equals("") || txtStoreName.getText().equals("") || txtStreetAddress.getText().equals("") || txtUsername.getText().equals("") || txtWebsite.getText().equals("")) { 

     JOptionPane.showMessageDialog(rootPane, "Please fill in all the information boxes"); 

    } else { 
     try { 
      DB regDB = new DB(); 

      regDB.AddSupplier(txtUsername.getText(), txtPassword.getText(), txtStreetAddress.getText(), txtStoreName.getText(), txtCity.getText(), txtContactNo.getText(), txtProvince.getText(), txtWebsite.getText(), txtAreaCode.getText()); 
     } catch (SQLException ex) { 

      System.out.println(ex.getLocalizedMessage().toString()); 
     } 
      setVisible(false); 
      new SupplierAbilityMenu().setVisible(true); 
    } 


} 

</pre></code> 

私は私の値を挿入私はというエラーメッセージが表示されます:

<pre><code> 
run: 
---connection succesful--- 
UCAExc:::3.0.6 data exception: division by zero 
BUILD SUCCESSFUL (total time: 1 second) 


</pre></code> 

イムそれはエラーが発生していると言うだろう、なぜあまりわからない「部門をゼロで "、しかし私は数値フィールドのデータベースのフィールドを持っていません。

EDIT:http://www53.zippyshare.com/v/DMLjdpDw/file.htmlリンクデータベース

+0

問題を再現できません。 Accessでデータベースを開き、データベースの圧縮と修復操作を実行してみてください。問題が解決しない場合は、エラーを確実に再現するデータベースファイルのコピーへのリンクを投稿することを検討してください。 –

+0

リンクを追加しました。ありがとうございます。 –

答えて

2

にアクセスするには、[AccountTbl]テーブルには3つの追加フィールドが含まれます。

[TotalRating] - 長整数、デフォルト0
[noRating] - 長整数、デフォルト0
を[overallRating] - 計算:[TotalRating]/[noRating]

[noRating]の値を指定していないので、デフォルトでは0になるため、[overallRating]計算は除算しようとしていますeは0である。

[noRating]列のデフォルト値をNullに変更する必要があります。[noRating]が入力されていない場合、[overallRating]計算でNullが返されます。

+0

完璧に動作します..トムソン大佐にもう一度感謝します! –

関連する問題