【发布时间】: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