【问题标题】:Cannot retrieve data into Jtextfield from MySql Database无法从 MySql 数据库将数据检索到 Jtextfield
【发布时间】:2016-12-08 09:43:58
【问题描述】:
 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 作为数据库的 Netbeans 项目。将数据插入数据库正在工作,但无法检索相同的数据。它抛出错误“未找到数据!”。检查连接并且没问题。以下是我用来建立连接的代码。请帮忙 !!

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();
    }

【问题讨论】:

  • 请更加努力地格式化您的代码以解决 Stack Overflow 问题。目前它的缩进不可读。接下来,停止构建这样的查询 - 改用 PreparedStatement 和参数化 SQL;您当前的方法容易受到 SQL 注入攻击和转换失败。
  • strUser 将始终包含数据库中最后一行的名称,而不是所有内容。
  • 另外,你应该使用准备好的语句来防止sql注入
  • @JonSkeet 对格式化感到抱歉。接下来我会记住这一点。
  • 好吧,您现在可以编辑它,而不是等到下一次......

标签: java mysql mysql-workbench netbeans-8


【解决方案1】:

在您的连接中添加st=cn.createStatement(); 在下面的行之后。

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

我不知道你需要做什么。

但我认为一开始会是

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);
 }
}

有一段时间我没有使用 Netbeans。如果我错了,请告诉我。

【讨论】:

  • 其实错误只出在一个数字上。在 strUser=rs.getString(1);而不是 1 它应该是 2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
相关资源
最近更新 更多