jsp从文本文件导入数据库应该注意些什么
我的jsp文件实现的是从文本里读出内容,然后根据分隔符生成sql语句,基本功能实现了,还有一些问题没考虑到,比如如果插入的数据重复该如何判断,还有就是 ,我以空格作为分隔符,如果一个字段为空,那么就是把下一个字段的内容作为这个字段,该如何解决,谁做过这方面的,给我改改程序,或者是还有什么缺陷给我指点指点,谢谢.
代码如下:
<%@ page contentType= "text/html; charset=gb2312 " language= "java " import= "java.sql.* "
errorPage= " " %>
<%@ page import= "java.io.*,java.sql.*,java.text.*,java.util.Date,java.util.*,java.math.*,java.net.*,java.lang.* "%>
<%
request.setCharacterEncoding( "gb2312 ");
Connection conn = null;
String hostName = " ";
String portNumber = "1521 ";
String databaseSID = " ";
String userName = " ";
String password = " ";
String url = "jdbc:oracle:thin:@ "+hostName+ ": "+portNumber+ ": "+databaseSID;
System.out.println(url);
Class.forName( "oracle.jdbc.driver.OracleDriver ");
conn = DriverManager.getConnection(url,userName,password);
//Statement statement=conn.createStatement();
String fSrcName= "/usr/java/jakarta-tomcat-5.0.28/webapps/ROOT/upload/test.txt ";
BufferedReader br = new BufferedReader(new FileReader(fSrcName)) ; //读文件
List list = new ArrayList(); //放置读取的内容
String[] str ;
String s;
while( (s = br.readLine()) != null)
{
str = s.split( "\\s+ ");
list.add(str);
}
//插入数据库
PreparedStatement pst=conn.prepareStatement( "insert into jswj(name,adda,tel) values(?,?,?) ");
for(int i=0; i <list.size(); i++)
{
String[] temp = (String[])list.get(i) ;
pst.setString(1, temp[0]);
pst.setString(2, temp[1]);
pst.setString(3, temp[2]);
pst.executeUpdate() ;
}
%>
<%
pst.close();
conn.close();
%>
</table>
</center>
</body>
</html>
------解决方案--------------------要判断以前是否有记录,你只有在插入前先取数据库看看存在不存在对应记录
字段为空的话你就暂时先用List 存起然后读取下段
------解决方案--------------------PreparedStatement pst=conn.prepareStatement( "insert into jswj(name,adda,tel) values(?,?,?) ");
for(int i=0; i <list.size(); i++)
{
String[] temp = (String[])list.get(i) ;
pst.setString(1, temp[0]);
pst.setString(2, temp[1]);
pst.setString(3, temp[2]);
pst.executeUpdate() ;
}
这段程序很别扭
------解决方案--------------------上面的改一下
PreparedStatement pst=conn.prepareStatement( "insert into jswj(name,adda,tel) valu