import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;import net.moraleboost.mecab.Node;
import net.moraleboost.mecab.impl.StandardLattice;
import net.moraleboost.mecab.impl.StandardTagger;public class DataAccess {
//private ArrayList<String> array=null;
//private ArrayList<String> arry=null;
public static void main(String[] args) {
DataAccess dataAccess =new DataAccess();
try {
dataAccess.selectPostgre();
} catch (Exception e) {
e.printStackTrace();
}
}public void selectPostgre() throws Exception{
  String user = "qito";  String pass = "111";  String servername = "127.0.0.1";  String dbname = "book";  
  Connection conn = null;
  Statement stmt = null;
  ResultSet rset = null;
  String isbn=null;
  String title=null;
  String str=null;
  int i;
  ResultSet idnum;
  int listid;
  ArrayList<String> array=new ArrayList();
  
  
 
   try {

Class.forName ("org.postgresql.Driver");
   
/* Connection作成 */
conn = DriverManager.getConnection 
("jdbc:postgresql://" + servername + ":5432/" + dbname,user,pass); /* Statement作成 */
stmt = conn.createStatement(); /* Resultset作成 */
rset = stmt.executeQuery("select * from book");
//while(rset.next()){
//System.out.println(rset.getString("isbn"));
//}
//System.out.println("!!!!!!!!!!!!!!!!");
String insertstr ;

while (rset.next()) {
//System.out.println(rset.getString("title"));
title=rset.getString("title");
//System.out.println(title);
isbn=rset.getString("isbn");
//System.out.println(isbn);
array=new ArrayList<String>(parse(rset.getString("title")));

for(i=1;i<array.size()+1;i++){

Iterator<String> it = array.iterator();
    while(it.hasNext())
    {
     str=new String(it.next());
      if(str.equals("")||str.equals("(")||str.equals(")")||str.equals("=")||str.equals("-")||str.equals("は")||str.equals("が")||str.equals("に")||str.equals("の")||str.equals("/")||str.equals("、")||str.equals("?")||str.equals("."))continue;
    
      str=str.replaceAll("\r\n","");
      System.out.print(str);
      stmt.executeQuery("insert into morpheme_list (morpheme_name) values('"+str+"')");//这里出错 但是数据可以插到数据库里     }

}
}

} catch (ClassNotFoundException e) {
throw e;
} catch (SQLException e) {
throw e;
} catch ( Exception e){
throw e;
}
finally{

if(conn != null){
  conn.close();
  conn = null;
}
if(stmt != null){
  stmt.close();
  stmt = null;
}
    if(rset != null){
  rset.close();
  rset = null;
}
}
}
private ArrayList<String> parse(String str){
ArrayList<String> arry=new ArrayList();
    StandardTagger tagger = new StandardTagger("-Oyomi");
    StandardLattice lattice = tagger.createLattice();
    
    lattice.setSentence(str);    tagger.parse(lattice); 
    Node node=lattice.bosNode();
    while (node != null) {
        String surface = node.surface();
 
        arry.add(surface);
        node = node.next();
    }
    lattice.destroy();
    tagger.destroy();
   
    return arry;
}}

解决方案 »

  1.   

    帖子没编辑完就点了回车。
    每次执行到插入数据库的地方就出现
    org.postgresql.util.PSQLException: 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255)
    at DataAccess.selectPostgre(DataAccess.java:102)
    at DataAccess.main(DataAccess.java:21)错误请问哪里错了?
    谢谢
      

  2.   

    是第一条记录插入成功,在尝试插入第二条记录的时候抛的异常吗?
    如果是的话建议看看数据表定义,是否有constraint violation,或者trigger抛出异常
      

  3.   

    stmt.executeQuery("insert into morpheme_list (morpheme_name) values('"+str+"')");insert用这个执行很搞笑另外插入一行第二行报错很可能是数据库的约束。
      

  4.   

    stmt.executeQuery("insert into morpheme_list (morpheme_name) values('"+str+"')");你用查询去执行更新?! 不是有executeUpdate() 和execute()吗.
      

  5.   

    我用它插入数据 给morpheme_name赋值
    主key设的自增