2011-07-27 17 views
-1
import java.awt.Panel; 

import java.awt.event.ActionEvent; 

import java.awt.event.ActionListener; 

import java.sql.DriverManager; 

import java.sql.PreparedStatement; 

import java.sql.ResultSet; 

import java.sql.Statement; 

import javax.swing.JButton; 

import javax.swing.JFrame; 

import javax.swing.JLabel; 

import javax.swing.JTextField; 

import com.mysql.jdbc.Connection; 

public class one implements ActionListener{ 

    JFrame frame = new JFrame("ghar hisab"); 
    JButton b = new JButton("save"); 
    Panel p = new Panel(); 
    JTextField f = new JTextField(20); 
    JTextField f1 = new JTextField(20); 
    JLabel l = new JLabel("Enter the first name"); 
    JLabel l1 = new JLabel("Enter the last name"); 
    String s1,s2; 
    String ppl; 
    int people; 

      void display() throws Exception{ 
           p.add(l); 
           p.add(f); 
           p.add(l1); 
           p.add(f1); 
           p.add(b); 

           frame.setSize(400,400); 

           frame.setVisible(true); 
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
           frame.getContentPane().add(p); 
           s1=f.getText(); 
           s2=f1.getText(); 


       //Class.forName("com.mysql.jdbc.Driver"); 
       //Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/people","root","desire"); 

       //Statement stat = con.createStatement(); 
      // String s3= "insert into name values s1 + s2"; 
      // stat.executeUpdate(s3); 



     // stat.executeQuery("insert into name (first,last) values('"+s1+"','"+s2+"')"); 
      b.addActionListener(this); 

     // ResultSet rs= stat.executeQuery("insert into name (first,last) values("arun","yadav")); 


      //while(rs.next()){ 
     //  System.out.println(rs.getString(1)+" "+rs.getString(2)); 
     // } 




     } 

     @Override 
     public void actionPerformed(ActionEvent event) { 
      // TODO Auto-generated method stub 
      try{ 
       Class.forName("com.mysql.jdbc.Driver"); 

      Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/people","root","desire"); 

      Statement stat = con.createStatement(); 

      stat.executeQuery("insert into name (first,last) values('"+s1+"','"+s2+"')"); 
      } 
      catch(Exception e){ 
       System.out.println("the exception caught is "+e); 
      } 
     } 


} 
+1

例外からスタックトレースを取得すると、これをデバッグするのに役立ちます。 –

+2

情報が不十分です - スタックトレースを投稿してください。そのメッセージを印刷しないでください - 利用可能な情報より少ない情報です。 – duffymo

+0

stat.executeUpdateでstat.executeQueryを置き換えると、例外の問題が解決されます。データベーステーブルの新しいエントリも作成されますが、「最初」と「最後」のフィールドには何も表示されません。 –

答えて

1

スタックトレースがないと、わかりにくいです。接続が確立されていないか、SQLの値によってクエリにエラーが発生しています(おそらく一方または両方がnullです)。私はconにブレークポイントを設定し、オブジェクトがnullであるかどうかを確認することをお勧めします。また、s1とs2が何であるかも見てください。以下、2行追加しました。ステートメントと接続を閉じる必要があります。

public void actionPerformed(ActionEvent event) { 
    // TODO Auto-generated method stub 
    try 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/people","root","desire"); 
     Statement stat = con.createStatement(); 
     stat.executeQuery("insert into name (first,last) values('"+s1+"','"+s2+"')"); 
     stat.close(); 
     con.close(); 
    } 
    catch(Exception e){ 
     System.out.println("e.fillInStackTrace:" + e.fillInStackTrace()); 
     System.out.println("e.getCause:" + e.getCause()); 
     System.out.println("e.getLocalizedMessage:" + e.getLocalizedMessage()); 
     System.out.println("e.getMessage.:" + e.getMessage()); 
     System.out.println("e.getStackTrace:" + e.getStackTrace()); 
     System.out.println("e.initCause:" + e.initCause()); 
     System.out.println("e.printStackTrace:" + e.printStackTrace()); 
     System.out.println("e.toString:" + e.toString());  
    } 
} 
+0

stat.executeUpdateによるstat.executeQueryの置き換えは、例外の問題を解決します。データベーステーブルの新しいエントリも作成されますが、「最初」と「最後」のフィールドには何も表示されません。 –

+0

"first"と "last"フィールドと言うとき、挿入が完了した後にデータベースにクエリをしていますか?次のように:SELECT * FROM [name] ??? – MacGyver

+0

ユーザ(root)はINSERTコマンドを実行するための適切な権限を持っていますか?私はそう思っています。それは根源だからですが、確かにしたいと思っていました。これらのフィールドのSQLデータ型は、Javaコードから送信するデータと一貫していますか? – MacGyver

1

私はPreparedStatementをインポートしたことに気がつきましたが、あなたのコードは決してそれを使用していません。まあ、私はSQLについてはあまりよく分かりませんが、PreparedStatementを使用するときに問題が発生する可能性は低いです。ここでは、挿入のための簡単な例です:

String sql = "INSERT INTO Name (First, Last) VALUES (?, ?)"; 

PreparedStatement stmt = connection.prepareStatement(sql); 

stmt.setString(1, s1); 
stmt.setString(2, s2); 
stmt.executeUpdate(); 

それはほとんどの人がテーブル名を作成するような方法であるので、私は、テーブル名とカラム名を大文字化の自由を取りました。

編集:そのコードが実行されると、ユーザはまだテキストフィールドに任意のデータを入力する機会がなかったので、

s1=f.getText(); 
s2=f1.getText(); 

テキストフィールドに値が含まれていません。これら2つのステートメントをactionPerformed()メソッドに移動する必要があります。

+0

stat.executeUpdateによるstat.executeQueryの置き換えは、例外の問題を解決します。データベーステーブルの新しいエントリも作成されますが、「最初」と「最後」のフィールドには何も表示されません。 –

+0

@Apurvaの場合、変数s1とs2に実際に値が含まれていることを確認してください。私の編集を参照してください。 – camickr