我现在把。TXT文件的内容插入到数据库的表里
。TXT文件里的第一行是表里的字段名
例如我。TXT文件里的第一行内容如下:
USER_ID USER_NAME DATE
第2行是要插入的数据
我现在的校验功能只实现一部分
只能校验第一行的字段是否和数据库表里的字段相同 如果不同将不许插入数据
我还想校验一下输入的数据
例如 USER_ID 的数据不能输入为空
DATA的输入格式必须是YYYY-MM-DD
假如USER_ID的输入为空 则提示USER_ID不能为空
DATE 输入的格式不对 则提示 DATE输入格式不正确
哪位好心人能帮我改一下代码啊 多谢了<%@page contentType="text/html; charset=GBK"%>
<%!
static final int TAB1_LEN=3;
static final int TAB2_LEN=3;static final String TAB1_NAME="T_user";
static final String TAB2_NAME="T_user01";public static String cite(String s)
{
if(s.length()==0)
return "NULL";
if (s.indexOf("'") != -1)
{
s=s.replace("'", "''");
}
return "'"+s+"'";
}
%>
<html>
<head>
<title>jsp1</title>
</head>
<body bgcolor="#ffffff">
<%
com.c06.MultipartRequest mrequest=new com.c06.MultipartRequest(request);
byte by[]=mrequest.getBytesParameter("file");//获得客户端上传的文件内容
if(by==null)
{
out.print("无效文件");
return;
}
String con=new String(by);//校验上传文件名前几个必须与STORER一样
if (!con.startsWith("USER_ID,USER_NAME"))
{
out.print("上传文件名前几个必须与数据库表字段一样");
}else
{ //保存上传的文件
java.io.FileWriter fw=new java.io.FileWriter(application.getRealPath("/Receipt.txt"));
fw.write(con);
fw.close();
java.sql.Statement stmt=null;
java.sql.Connection conn=null;
try{
/*
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test";
String user="sa";
String password=""; */
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@172.18.8.8:1521:testcn";
//orcl为你的数据库的SID
String user="kerrier";
String password="kerrier"; conn= java.sql.DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
}catch(Exception e){
out.print("数据库操作失败!");
return;
}finally{
// stmt.close();
// conn.close();
}
java.util.StringTokenizer tokenizer=new java.util.StringTokenizer(con,"\r\n");
tokenizer.nextToken();
int count=0;
while(tokenizer.hasMoreTokens())
{
String line=tokenizer.nextToken();
//以退格字符为分隔点,转为数组
String split[]=line.split(" ");
//生成SQL语句
StringBuffer sql=new StringBuffer(cite(split[0])); StringBuffer sql2=new StringBuffer(cite(split[TAB1_LEN]));
for(int index=1;index<split.length;index++)
{
if(index<TAB1_LEN)
sql.append(","+cite(split[index]));
else
if(index>TAB1_LEN)
sql2.append(","+cite(split[index]));
}
System.out.println(sql.toString());
try
{
stmt.executeUpdate("INSERT INTO "+TAB1_NAME+" VALUES("+sql.toString()+")");
}catch(Exception e)
{
out.print("行:"+count+" 信息:"+e.getMessage()+"<BR>");
}
try
{
stmt.executeUpdate("INSERT INTO "+TAB2_NAME+" VALUES("+sql2.toString()+")");
}catch(Exception e)
{
out.print("行:"+count+" 信息:"+e.getMessage()+"<BR>");
}
count++;
}
out.print("<h1>总行数:"+count); stmt.close();
conn.close();
}
%>
</body>
</html>
。TXT文件里的第一行是表里的字段名
例如我。TXT文件里的第一行内容如下:
USER_ID USER_NAME DATE
第2行是要插入的数据
我现在的校验功能只实现一部分
只能校验第一行的字段是否和数据库表里的字段相同 如果不同将不许插入数据
我还想校验一下输入的数据
例如 USER_ID 的数据不能输入为空
DATA的输入格式必须是YYYY-MM-DD
假如USER_ID的输入为空 则提示USER_ID不能为空
DATE 输入的格式不对 则提示 DATE输入格式不正确
哪位好心人能帮我改一下代码啊 多谢了<%@page contentType="text/html; charset=GBK"%>
<%!
static final int TAB1_LEN=3;
static final int TAB2_LEN=3;static final String TAB1_NAME="T_user";
static final String TAB2_NAME="T_user01";public static String cite(String s)
{
if(s.length()==0)
return "NULL";
if (s.indexOf("'") != -1)
{
s=s.replace("'", "''");
}
return "'"+s+"'";
}
%>
<html>
<head>
<title>jsp1</title>
</head>
<body bgcolor="#ffffff">
<%
com.c06.MultipartRequest mrequest=new com.c06.MultipartRequest(request);
byte by[]=mrequest.getBytesParameter("file");//获得客户端上传的文件内容
if(by==null)
{
out.print("无效文件");
return;
}
String con=new String(by);//校验上传文件名前几个必须与STORER一样
if (!con.startsWith("USER_ID,USER_NAME"))
{
out.print("上传文件名前几个必须与数据库表字段一样");
}else
{ //保存上传的文件
java.io.FileWriter fw=new java.io.FileWriter(application.getRealPath("/Receipt.txt"));
fw.write(con);
fw.close();
java.sql.Statement stmt=null;
java.sql.Connection conn=null;
try{
/*
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test";
String user="sa";
String password=""; */
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@172.18.8.8:1521:testcn";
//orcl为你的数据库的SID
String user="kerrier";
String password="kerrier"; conn= java.sql.DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
}catch(Exception e){
out.print("数据库操作失败!");
return;
}finally{
// stmt.close();
// conn.close();
}
java.util.StringTokenizer tokenizer=new java.util.StringTokenizer(con,"\r\n");
tokenizer.nextToken();
int count=0;
while(tokenizer.hasMoreTokens())
{
String line=tokenizer.nextToken();
//以退格字符为分隔点,转为数组
String split[]=line.split(" ");
//生成SQL语句
StringBuffer sql=new StringBuffer(cite(split[0])); StringBuffer sql2=new StringBuffer(cite(split[TAB1_LEN]));
for(int index=1;index<split.length;index++)
{
if(index<TAB1_LEN)
sql.append(","+cite(split[index]));
else
if(index>TAB1_LEN)
sql2.append(","+cite(split[index]));
}
System.out.println(sql.toString());
try
{
stmt.executeUpdate("INSERT INTO "+TAB1_NAME+" VALUES("+sql.toString()+")");
}catch(Exception e)
{
out.print("行:"+count+" 信息:"+e.getMessage()+"<BR>");
}
try
{
stmt.executeUpdate("INSERT INTO "+TAB2_NAME+" VALUES("+sql2.toString()+")");
}catch(Exception e)
{
out.print("行:"+count+" 信息:"+e.getMessage()+"<BR>");
}
count++;
}
out.print("<h1>总行数:"+count); stmt.close();
conn.close();
}
%>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货