2017-10-17 4 views
0

어떤 도움을 주시면 대단히 감사하겠습니다. 이것에 잠시 머물러 있고 점점 더 혼란스러워하고있는 것처럼 보입니다!JDBC mysql 데이터베이스에서 데이터를 설정 및 검색

나는 열 (A, E, I, O 및 U)이있는 'VowelCount'테이블과 사용자가 입력 한 각 모음의 수를 저장하는 하나의 행을 가진 간단한 데이터베이스를 가지고 있습니다.

모음의 수는 사용자가 새 문장을 입력 한 다음 현재 입력에 대한 모음을 입력 할 때마다 업데이트해야하며 모든 이전 입력을 표시해야합니다.

현재 모음을 표시하는 방법을 알아 냈습니다. 그러나 데이터를 데이터베이스 테이블로 업데이트하는 중 문제가 발생하여이를 다시 검색하여 누적 합계에 더할 수 있도록 변수에 저장하십시오.

만약 이것이 맞는다면!

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://xmlns.jcp.org/jsf/html"> 
<h:head> 
    <title>Vowel Count Output</title> 
</h:head> 
<h:body> 
    <h1>Vowel count output</h1> 
    <h2>You typed: <h:outputText value="#{dataVowelBean.name}" /></h2> 

    <p> The number of A's: <h:outputText value="#{dataVowelBean.numberOfA}" /></p> 
    <p> The number of E's: <h:outputText value="#{dataVowelBean.numberOfE}" /></p> 
    <p> The number of I's: <h:outputText value="#{dataVowelBean.numberOfI}" /></p> 
    <p> The number of O's: <h:outputText value="#{dataVowelBean.numberOfO}" /></p> 
    <p> The number of U's: <h:outputText value="#{dataVowelBean.numberOfU}" /></p> 

    <p> The total number of A's: <h:outputText value="#{dataVowelBean.totalOfA}" /></p> 
    <p> The total number of E's: <h:outputText value="#{dataVowelBean.totalOfE}" /></p> 
    <p> The total number of I's: <h:outputText value="#{dataVowelBean.totalOfI}" /></p> 
    <p> The total number of O's: <h:outputText value="#{dataVowelBean.totalOfO}" /></p> 
    <p> The total number of U's: <h:outputText value="#{dataVowelBean.totalOfU}" /></p> 

</h:body> 

,691 :

<h:head> 
    <title>Vowel Count Example</title> 
</h:head> 
<h:body> 
    <h1>This is a vowel count example</h1> 
    <h:form> 
     <h2> Please type your name in the box and I will tell you how many vowels were used: </h2> 
     <h:inputText value="#{dataVowelBean.name}" /> <p> </p> 
      <h:commandButton type="submit" value="Submit" action="databaseVowelCount" /> 
    </h:form> 
</h:body> 
여기

는 XHTML 출력이다

package managed_bean; 

import javax.inject.Named; 
import javax.enterprise.context.RequestScoped; 
import java.sql.*; 



@Named(value = "dataVowelBean") 
@RequestScoped 
public class dataVowelBean 
{ 
private String name; 
private int numberOfA; 
private int numberOfE; 
private int numberOfI; 
private int numberOfO; 
private int numberOfU; 
private int totalA; 
private int totalE; 
private int totalI; 
private int totalO; 
private int totalU; 




public String getName() 
{ 
    return name; 
} 

public void setName(String name) 
{ 
    this.name = name; 
    numberOfA(); 
    numberOfE(); 
    numberOfI(); 
    numberOfO(); 
    numberOfU(); 
    storeVowelsInDatabase(); 

} 

public int getNumberOfA() 
{ 
    return numberOfA; 
} 

public int getNumberOfE() 
{ 
    return numberOfE; 
} 

public int getNumberOfI() 
{ 
    return numberOfI; 
} 

public int getNumberOfO() 
{ 
    return numberOfO; 
} 

public int getNumberOfU() 
{ 
    return numberOfU; 
} 

public int getTotalOfA() 
{ 
    return totalA; 
} 

public int getTotalOfE() 
{ 
    return totalE; 
} 

public int getTotalOfI() 
{ 
    return totalI; 
} 

public int getTotalOfO() 
{ 
    return totalO; 
} 

public int getTotalOfU() 
{ 
    return totalU; 
} 



public void storeVowelsInDatabase() 
{ 
    int countA; 
    int countE; 
    int countI; 
    int countO; 
    int countU; 

try 
    { 
     DriverManager.registerDriver(new()); 
     Connection con; 
     con = DriverManager.getConnection(url, "user", "pass"); 

     PreparedStatement stmtGet = con.prepareStatement("SELECT A, E, I, O, 
     U FROM vowelCountTable"); 
     //countA = stmtGet.executeQuery(); 
     ResultSet rs = stmtGet.executeQuery(); 

     countA = (rs.getInt("A") + getNumberOfA()); 
     totalA = countA; 

     countE = (rs.getInt("E") + getNumberOfE()); 
     totalE = countE; 

     countI = (rs.getInt("I") + getNumberOfI()); 
     totalI = countI; 

     countO = (rs.getInt("O") + getNumberOfO()); 
     totalO = countO; 

     countU = (rs.getInt("U") + getNumberOfU()); 
     totalU = countU; 

     PreparedStatement stmtSet = con.prepareStatement("UPDATE 
     vowelCountTable SET A = ?, E = ?, I = ?, O = ?, U = ?"); 



    stmtSet.setInt(1, totalA); 
    stmtSet.setInt(2, totalE); 
    stmtSet.setInt(3, totalI); 
    stmtSet.setInt(4, totalO); 
    stmtSet.setInt(5, totalU); 
    stmtSet.executeUpdate(); 



     stmtSet.close(); 
     con.close(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

private void numberOfA() 
{ 
    for (int i = 0; i < name.length(); i++) 
    { 
     if (name.charAt(i) == 'a') 
      { 
       numberOfA++; 
      } 
    } 
} 

private void numberOfE() 
{ 
    for (int i = 0; i < name.length(); i++) 
    { 
     if (name.charAt(i) == 'e') 
      { 
       numberOfE++; 
      } 
    } 
} 

private void numberOfI() 
{ 
    for (int i = 0; i < name.length(); i++) 
    { 
     if (name.charAt(i) == 'i') 
      { 
       numberOfI++; 
      } 
    } 
} 

private void numberOfO() 
{ 
    for (int i = 0; i < name.length(); i++) 
    { 
     if (name.charAt(i) == 'o') 
      { 
       numberOfO++; 
      } 
    } 
} 

private void numberOfU() 
{ 
    for (int i = 0; i < name.length(); i++) 
    { 
     if (name.charAt(i) == 'u' || name.charAt(i) == 'U') 
      { 
       numberOfU++; 
      } 
    } 
} 

} 여기

입력 XHTML 화면이며

+0

어떤 종류의 "문제"가 있습니까? 제발 당신이 어떤 문제를 구체적으로 실행 –

+0

안녕하세요, 나는 데이터베이스에서 테이블을 업데이 트하고 그것에서 데이터를 검색하는 데 문제가 있습니다. xhtml 출력 화면에서 모든 모음의 수가 '0'으로 표시되지만 오류는 발생하지 않습니다. 다른 모음에 대해서도 모음에 수동으로 모음 수를 넣었지만 여전히 0으로 표시됩니다. 따라서 검색되지도 않습니다. 고맙습니다! – RiceCrispy

답변

0

ResultSet 변수에서 next() 메서드를 호출해야합니다. JDBC의 ResultSet은 일종의 포인터로 작동하며이 포인터는 첫 번째 결과보다 먼저 시작됩니다. 결과 집합을 반복하지 않기 때문에 int에 대한 기본값을 얻을 수 있습니다.이 값은 0입니다.

P. 그냥 vowelCountTable (letter, count)처럼 테이블에 간단한 모델을 사용하는 것이 좋습니다. 그런 다음 문자 열의 도메인을 보가로만 제한 할 수 있습니다.

+0

고맙습니다. 옳았고 next() 메서드를 호출해야했습니다. – RiceCrispy

관련 문제