昨天刚考试完,今天闲来无事就想把书上一小段代码实现了,其实考试前也试过,但是有错误就果断改用自己的思路实现了。今天闲下来,觉得还是想能清楚到底是哪的问题?
主要实现就是一个登录验证,通过页面和后台数据库查找匹配符,很简单的一个问题,但是想写的代码重用性较高,就用了下面这些代码
public ResultSet query(String sql , Object... args )
throws Exception
{
PreparedStatement pstmt
= getConnection().prepareStatement(sql);
for (int i = 0; i < args.length ; i++ )
{
pstmt.setObject( i + 1 , args[i]);
}
return pstmt.executeQuery();
}
调用查询方法时用的下面这些代码:
首先要取得数据库连接
ResultSet rs=dd.query("select password from user +“ where username=? ",username);
System.out .println(rs.getString("password"));
if(rs.next())
{
if(rs.getString("password").equals(pass)){
其实,
select password from user +“ where username=?这语句可以直接用"select*from user where username='"+username+"'"替换,意义也比较直观,但是就是想用”
Object... args“实现不定参数,提高重用性,但是代码运行老出现com.mysql.jdbc.exceptions.MySQLSyntaxErrorExceptio
n: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'u.username='admin'' at line 1错误,代码没有语法上的错误但就是不知道为什么?后来试着改成
db.query("select password from user u where u.username=? ",username)然后就对了,莫名其妙。
这也许是版本不同,支持的格式也不一样,第一次写博客,欢迎批评指正。