簡體   English   中英

從數據庫中獲取值

[英]Fetching value from the database

我有一個名為“客戶”的mysql表。 序列號(int),名稱(varchar),性別(varchar)是表字段。

我有一個int變量a = 2。

我想從序列號= a時從表中獲取值。 那就是當序列號= 2時,它應該顯示特定客戶的名字。

String url="jdbc:mysql://localhost/shopping";
String usr ="root";
String pass = "rootpassword";

session.setAttribute( "URL", url );
session.setAttribute( "user", usr );
session.setAttribute( "passwd", pass );

String connectionURL = (String)session.getAttribute( "URL" );
String user = (String)session.getAttribute("user");
String passwd = (String)session.getAttribute("passwd");
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      connection = DriverManager.getConnection(connectionURL, user, passwd);
      statement = connection.createStatement();

rs=statement.executeQuery("select * from customer where serialnumber like '%a%' ");

      while (rs.next()) {
      out.println("Customer Name: ");
      out.println(rs.getString("name")); 
     }rs.close();
    }catch(Exception ce){out.println(ce);}             

這什么也沒扔。 但是,當我在rs.execute查詢中提供數字而不是a時,它將顯示客戶名稱。 如何解決這個問題,我的錯誤是什么?

謝謝

你對待a像文字,而不是一個變量。 您將需要像這樣更新查詢:

executeQuery("SELECT * FROM customer WHERE serialnumber LIKE '%" + a + "%' ");

我沒有包括rs = statement. 為了簡潔起見,並刪除滾動條。 您仍然需要解決方案。


@ypercube很好:如果您要查看序列號何時精確為2:

rs = statement.executeQuery("SELECT * FROM customer WHERE serialnumber = " + a);

另外,如果僅使用name字段,則不應該SELECT *而是SELECT name

我認為LIKE即使適用於整數列也不適用。 這里是一個更正式/有效/安全的版本:

String selectString = "SELECT * FROM customer WHERE serialnumber = ?";
selectStm = connection.prepareStatement(selectString);
selectStm.setInt(1, a.intValue());
rs = selectStm.executeQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM