最近在做毕业设计,需要一个全文数据库,于是就想自己建立一个。遇到的问题如下:
1、插入数据问题
在网数据库里面插入数据的时候,不能执行成功,所采用的方法是:
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/infocloud", "root", "root");
statement = connection.createStatement();
statement.execute("INSERT INTO DBFiles2Index(URL,DOCNO,CONTENTTITLE,CONTENT) VALUES(url,docno,contenttitle,content)");
其中url,docno,contenttitle,content都是从文件中解析出来的字符串,采用MySQL数据库,每个字段均是text类型,但是插入均失败。
经过排查,修改如下可以正常使用:
a) 不采用statement对象,使用preparedstatement这个对象
PreparedStatement pst = connection.prepareStatement("INSERT INTO DBFiles2Index (URL,DOCNO,CONTENTTITLE,CONTENT) VALUES (?,?,?,?);");
pst.setString(1,url);
pst.setString(2,docnumber);
pst.setString(3,contenttitle);
System.out.println(content);
pst.setString(4,content);
pst.execute();
PreparedStatement 的setString方法是设置第1,2,3,4个value值,这里还是以上的4个String类型的参数。
b) 在工程的Properties->Resource采用GBK编码格式
正常在工程中都是设置编码格式问UTF-8,这样中文才能显示,但是这时不能网数据库中插入数据,不知道为什么,具体还要再研究。采用GBK编码后,工程中中文显示为 乱码,但是插入数据库中的显示是中文,用SELECT语句查询的时候返回值也是正常显示中文。