2016-08-02 16 views
0
try 
        { 
         st=cn.createStatement(); 
         String strUser=""; 
         rs=st.executeQuery("SELECT * FROM chsl_db WHERE name='"+nametxt.getText()+"'"); 
         while(rs.next()) 
         { 
          strUser=rs.getString(1); 
         } 
         if(strUser.equals(nametxt.getText())) 
         { 
         st= cn.createStatement(); 
         rs = st.executeQuery("SELECT * FROM chsl_db WHERE name ='" + nametxt.getText() + "'"); 
         while (rs.next()) 
         { 
          titletxt.setText(rs.getString(1)); 
          nametxt.setText(rs.getString(2)); 
          flatnum.setText(rs.getString(3)); 
          areatxt.setText(rs.getString(4)); 
          emailtxt.setText(rs.getString(5)); 
          deletebutton.setEnabled(true); 
         } 

         st.close(); 
         } 
          else 
          { 
           JOptionPane.showMessageDialog(null,"No Data Found!","Security Warning",JOptionPane.WARNING_MESSAGE); 
            } 

            } 

    catch(SQLException s) 
    { 
     System.out.println("No record found!\n\n\n"); 
     System.out.println("SQL Error" + s.toString() + " " + s.getErrorCode() + " " + s.getSQLState()); 
    } 
catch(Exception x) 
    { 
     System.out.println("Error" + x.toString()+" " + x.getMessage()); 
    } 

}       

データベースとしてMySql Workbenchを使用しているプロジェクト。データベースへのデータの挿入は機能していますが、同じデータを取得することはできません。エラー "No Data Found!"がスローされます。接続とOKを確認しました。以下は私が接続を確立するために使用したコードです。助けてください !!MySqlデータベースからJtextfieldにデータを取得できません。

try 
    { 
     Class.forName("java.sql.Driver"); 
     cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/avinash?useSSL=false","root","password"); 
    } 
      catch(ClassNotFoundException e) 
      { 
     System.err.println("Failed to load driver"); 
     e.printStackTrace(); 
    } 
    catch(SQLException e) 
      { 
     System.err.println("Unable to connect"); 
     e.printStackTrace(); 
    } 
+0

Stack Overflowの質問のためのコードを書式設定するための努力をしてください。現時点では不可解にインデントされています。次に、そのようなクエリの作成をやめ、 'PreparedStatement'とパラメータ化されたSQLを代わりに使用します。現在のアプローチはSQLインジェクション攻撃や変換の失敗に対して脆弱です。 –

+0

'strUser'は常にすべてのデータではなく、データベースの最後の行の名前を含みます。 –

+0

また、SQLインジェクションを防ぐために準備文を使用することもできます。 –

答えて

0

st=cn.createStatement();を下記の行に続けて入力してください。

cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/avinash?useSSL=false","root","password"); 

私はあなたが何をする必要はありません。

が、私はそのiはNetbeansのをしばらく使用していないされて

try { 
    nm = nametxt.getText(); 
if(nm != '') { 
    rs = st.executeQuery("SELECT * FROM chsl_db WHERE name ='" + nm + "'"); 
while (rs.next()) { 
    titletxt.setText(rs.getString(1)); 
    nametxt.setText(rs.getString(2)); 
    flatnum.setText(rs.getString(3)); 
    areatxt.setText(rs.getString(4)); 
    emailtxt.setText(rs.getString(5)); 
    deletebutton.setEnabled(true); 
} 
st.close(); 
} 
else { 
JOptionPane.showMessageDialog(null,"No Data Found!","Security Warning",JOptionPane.WARNING_MESSAGE); 
} 
} 

だろう初めに思います。だから私が間違っているかどうか教えてください。

+0

実際には間違いは1つのnumber.In strUser = rsにありました。 .getString(1); 1の代わりに2にする必要があります –

関連する問題