pst.setString(1,user); //此处传的两个什么参数各有什么用处什么?
答:1表示你第一问号 要填的值 2表示第2个问号要填的值 这两个值 都是方法传递过来的
实际上等于
select * from users where user =user and pwd=password";
通过这句话去数据库查询是否有这样的数据

 
rs = pst.executeQuery();//这个是不是返回一个结果集
//rs.next是什么意思?
因为是一个结果集就意味着可能有很多值 这句话的意思是说 rs.next 进行 读取结果集 的下一条数据
 成功为true 不成功为false

解决方案 »

  1.   


    通过使用java.sql.preparedstatement,这个问题可以自动解决。一个preparedstatement是从java.sql.connection对象和所提供的sql字符串得到的,sql字符串中包含问号(?),这些问号标明变量的位置,然后提供变量的值,最后执行语句,例如: stringsql = "select * from people p where p.id = ? and p.name = ?";
    preparedstatement ps = connection.preparestatement(sql);
    ps.setint(1,id);
    ps.setstring(2,name);
    resultset rs = ps.executequery(); 
    使用preparedstatement的另一个优点是字符串不是动态创建的。下面是一个动态创建字符串的例子: stringsql = "select * from people p where p.i = "+id; 
    这允许jvm(javavirtual machine,java虚拟机)和驱动/数据库缓存语句和字符串并提高性能。preparedstatement也提供数据库无关性。当显示声明的sql越少,那么潜在的sql语句的数据库依赖性就越小。由于preparedstatement具备很多优点,开发者可能通常都使用它,只有在完全是因为性能原因或者是在一行sql语句中没有变量的时候才使用通常的statement。
      

  2.   

    通过使用java.sql.preparedstatement,这个问题可以自动解决。一个preparedstatement是从java.sql.connection对象和所提供的sql字符串得到的,sql字符串中包含问号(?),这些问号标明变量的位置,然后提供变量的值,最后执行语句,例如: stringsql = "select * from people p where p.id = ? and p.name = ?";
    preparedstatement ps = connection.preparestatement(sql);
    ps.setint(1,id);
    ps.setstring(2,name);
    resultset rs = ps.executequery(); 
    使用preparedstatement的另一个优点是字符串不是动态创建的。下面是一个动态创建字符串的例子: stringsql = "select * from people p where p.i = "+id; 
    这允许jvm(javavirtual machine,java虚拟机)和驱动/数据库缓存语句和字符串并提高性能。preparedstatement也提供数据库无关性。当显示声明的sql越少,那么潜在的sql语句的数据库依赖性就越小。由于preparedstatement具备很多优点,开发者可能通常都使用它,只有在完全是因为性能原因或者是在一行sql语句中没有变量的时候才使用通常的statement。