public boolean insert(Student student) throws Exception
    {
     Class.forName("com.mysql.jdbc.Driver");
     Connection con = DriverManager.getConnection("jdbc:mysql:127.0.0.1:3306/test","root","");
     PreparedStatement ps = con.prepareStatement("insert into student(name,password,age) values(?,?,?);");
     ps.setString(1, student.getName());
     ps.setString(2, student.getPassword());
     ps.setInt(3, student.getAge());
     ps = con.prepareStatement("select * from student where name='?'");
     ps.setString(1, student.getName());
     ResultSet rs = ps.executeQuery();
     if(rs.next())
     {
     return true;
     }
     return false;
    }

解决方案 »

  1.   

    你这段程序里面有很多的问题:1. 连接字符串不对,少了双斜杠;
    2. INSERT 语句没有执行;
    3. SELECT 中的“?”不需要单引号(不过加了我也没有试过是否对不对);
    4. ResultSet, PreparedStatement, Connection 都没有关,实际上做插入用不到期 ResultSet。修改后的程序如下(由于没有编译器,没有办法保证程序的正确性,参考一下吧):public boolean insert(Student student) {   
    Connection con = null;
    PreparedStatement ps = null;
    int updateRows = 0;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root",""); 
    ps = con.prepareStatement("insert into student(name,password,age) values(?,?,?)"); 
    ps.setString(1, student.getName()); 
    ps.setString(2, student.getPassword()); 
    ps.setInt(3, student.getAge()); 
    updateRows = ps.executeUpdate();  
    } catch (ClassNotFoundException e1) {
    e1.printStackTrace();
    } catch (SQLException e2) {
    e2.printStackTrace();
    } finally {
    try {
    ps.close();
    con.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if(updateRows > 0 ) {
    return true;
    } else {
    return false;
    }
    }
      

  2.   

    还有一个建议是不要在这个程序中直接对数据库进行连接,万一数据库改的话,每个用到 JDBC 的类都得去修改,比较麻烦,可以写个 Connection 的工厂,来获得连接,这样哪怕采用不同的数据库或者是其他的连接方式(如:JNDI)只需要修改一个类就可以了。package com.util;import java.sql.Connection;
    import java.sql.DriverManager;public class ConnectionFactory { private ConnectionFactory(){
    } public static Connection getConnection() {
    Connection con = null;
    try {
    Class.forname("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://127.0.0.1:3306/test";
    String username = "root";
    String password = "";
    con = DriverManager.getConnection(url, username, password);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    return con;
    }
    }在代码中就可以改为 con = ConnectionFactory.getConnection(); 这样子了。如果要做得更好的话,可以将 getConnection() 写成单例,保证只有一个 Connection 在活动中,这样在单用户状态下可以提高连接数据库的效率的,但是这需要一定的技巧,比如:Connection 的 close() 问题等等,这个就留给楼主自己去考虑了喔~~~~~