日期:2014-05-18  浏览次数:20747 次

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