2011-06-22 48 views
0
import java.sql.*; 
import java.io.*; 

public class User { 
    String s1; 
    int age; 
    String s2; 
    String s3; 

    /** 
    * @param args 
    * @return 
    */ 
    public void AddUser() throws SQLException { 

     try { 
      // TODO Auto-generated method stub 

      BufferedReader str = new BufferedReader(new InputStreamReader(
        System.in)); 
      System.out.println("Enter your name"); 
      s1 = str.readLine(); 
      System.out.println("Enter your age"); 
      age = Integer.parseInt(str.readLine()); 
      System.out.println("sex"); 
      s2 = str.readLine(); 
      System.out.println("DOB"); 
      s3 = str.readLine(); 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con = DriverManager.getConnection("jdbc:odbc:20june"); 
      String query = "insert into UserDetails values(?,?,?,?)"; 
      PreparedStatement ps = con.prepareStatement(query); 
      ps.setString(1, s1); 
      ps.setInt(2, age); 
      ps.setString(4, s2); 
      ps.setString(3, s3); 
      ps.executeUpdate(); 
      System.out.println("Record Inserted"); 
      ps.close(); 
      con.close(); 
     } catch (Exception ex) { 
      System.out.println(ex); 
     } 
    } 

    public void SearchUser() throws SQLException, IOException { 
     String str1; 
     try { 
      BufferedReader str2 = new BufferedReader(new InputStreamReader(
        System.in)); 
      System.out.println("Enter your search"); 
      str1 = str2.readLine(); 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      Connection con = DriverManager.getConnection("jdbc:odbc:20june"); 
      String query1 = "SELECT * FROM UserDetails WHERE UserName like'str1%'"; 
      PreparedStatement ps = con.prepareStatement(query1); 
      ps.setString(1, str1); 
      ps.executeUpdate(); 
      ps.close(); 
      con.close(); 
     } 

     catch (NullPointerException e) 

     { 
      System.out.println(e); 
     } catch (Exception ex) { 
      System.out.println(ex); 
     } 
    } 

    public static void main(String[] args) throws IOException, SQLException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     User u1 = new User(); 

     { 
      System.out.println("-------Menu-----------"); 
      System.out.println("1.Add User Details "); 
      System.out.println("2.Search user"); 
      System.out.println("Enter your choice"); 
      int m = Integer.parseInt(br.readLine()); 
      switch (m) { 
      case 1: 
       u1.AddUser(); 
       break; 
      case 2: 
       u1.SearchUser(); 
       break; 
      default: 
       System.out.println("Invalid choice"); 
       break; 
      } 
     } 
    } 
} 

回答

0

該搜索查詢是錯誤的:

String query1 = "SELECT * FROM UserDetails WHERE UserName like'str1%'"; 

相反,這樣做:

String query1 = "SELECT * FROM UserDetails WHERE UserName like'%?%'"; 
2

看堆棧跟蹤發現,是行造成NPE。然後確定哪個變量爲空並修復代碼。我們無法幫助您,因爲我們無法執行代碼,因爲我們無法訪問您的數據庫。

如果問題是,你不知道什麼線引起,那麼問題用打印出堆棧跟蹤:

e.getStackTrace(); 

當你趕上NPE。

我不知道很多關於SQL,但我使用如下代碼來指定參數:

String sql = "INSERT INTO Page (Name, Title) VALUES (?, ?)"; 

PreparedStatement stmt = connection.prepareStatement(sql); 

stmt.setString(1, "Name1"); 
stmt.setString(2, "Title1"); 
stmt.executeUpdate(); 

的想法是保持SQL簡單,所以你續擔心分隔符。

0

你是不是在查詢正確定義參數,用途:

String query1 = "SELECT * FROM UserDetails WHERE UserName like ?"; 
PreparedStatement ps = con.prepareStatement(query1); 
ps.setString(1, str1 + "%"); 
相關問題