我有一个名为“句子”的类 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;
}
这是我从 Class Sentence.String[] tempWords 中检索 Word 的方法,它是一个对象 Sentence 中 Words 的值。并且 Sentence 本身会根据 ArrayList Sentence 的大小循环
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 连接)