У меня есть один класс ArrayList с именем «Предложение». каждое Предложение содержит значение "Слова". Я должен проверять каждое слово в базе данных MySQL, является ли оно стоп-словом или нет. Скажем, у меня есть 200 «предложений», и каждое предложение имеет разное количество «слов».
Я проверял «Слова» одно за другим в базе данных, когда он достигает более 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 — это значение слов в одном предложении объекта. И само предложение будет зацикливаться в соответствии с размером предложения 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;
}
Почему все нормально, пока не наберется примерно 2500 слов? (иногда это нормально до 3500-х слов перед сбоем соединения, стабильно ниже 2500-х слов)
ОБНОВЛЕНИЕ: теперь я знаю, где остановилось соединение. Он остановился на зацикливании на 153-м предложении. так что это не зависит от слов. все еще присмотри за ошибкой
- Я нашел ответ. я открываю соединение в цикле, поэтому MySQL использует слишком много соединений (152 соединения)
List
вместоArrayList
в качестве возвращаемого типа. - person Ondra Žižka   schedule 10.07.2013