나는 "문장"이라는 하나의 클래스 ArrayList를 가지고있다. 각 문장은 값 "단어"를 포함합니다. 스톱 어라운드인지 여부에 관계없이 MySQL 데이터베이스에 각 단어를 확인해야합니다. 말하자면, 나는 "문장"이 200 개 있고 문장마다 다양한 "단어"가 있습니다.하나의 루핑에서 MySQL 최대 히트
데이터베이스에 "단어"를 한 번에 하나씩 확인했습니다. 연결 수가 실패하기 전에 단어가 2500자를 초과하면 (때로는 3500 번째 단어까지 도달 함) 오류가 발생합니다. 2500
아래의 "단어"의 수가이 내 쿼리 코드
public Query() throws SQLException, ClassNotFoundException{
try{
cd = new Connect();
connect = cd.getConnection();
statement = (Statement) connect.createStatement();
}catch(SQLException e){
System.err.println("Database connecting failed");
}
}
public boolean isStopWords(String word) throws SQLException{
String query = "SELECT stopwords FROM stopword WHERE stopwords = '"+word+"'";
rs = statement.executeQuery(query);
if(!rs.next()) return false;
else return true;
}
그러나 만약 그것을 잘 이것은 검색 내 방법이 내 연결 코드
public Connect() throws SQLException{
try{
Class forName = Class.forName ("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException ex){
}
connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "root", null);
}
public Connection getConnection(){
return connect;
}
되어있을 것 Sentence 클래스의 단어 .String [] tempWords는 한 개체 문장의 단어 값입니다. 그리고 문장 자체는 벌금이 약 2500 "단어"를 돌 때까지 왜 ArrayList의 문장
protected ArrayList<String> eraseStopWord (String[] tempWords) throws SQLException, ClassNotFoundException{
result = new ArrayList<String>();
db = new Query();
for(int i=0;i<tempWords.length;i++){
if(!db.isStopWords(tempWords[i])){
result.add(tempWords[i]);
}
}
return result;
}
의 크기에 따라 반복 할 것인가? (때로는 연결이 실패하기 전에 3500 번째 단어까지 괜찮습니다. 단어의 2500 번째 문자보다 안정적입니다.)
업데이트 : 이제 연결이 중지 된 부분을 알 수 있습니다. 그것은 153 번째 문장 루핑에서 멈췄다. 그래서 그 단어에 의존하지 않습니다. 버그 후 모양을 봐
- 나는 대답을 찾았습니다. 나는 루프에서 연결을 열어서 MySQL이 너무 많은 연결 (152 연결)을 취한다.
arraylist에서 값을 반복하고 가져 오는 위치는 어디입니까? – pikrut
질문을 편집합니다 –
콜렉션을 사용할 때 인터페이스를 사용해야합니다. 즉 반환 유형으로'ArrayList' 대신'List'를 사용해야합니다. –