简单的批量插入问题,大家进来看下。。。。。。。。

yinxiaoqi 2010-07-27 10:39:01
首先我有个a.jsp页面代码如下:

<form action="/NMSoftware/attendanceregister.do?method=addAttendancereGister" method="post">
for(int i=0;i<10;i++){
<input type="text" name="ID" value="<%=i%>">
<input type="text" name="AR_Notes" value="<%=i%>">
}

<input type="submit">
</form>

这个页面有个表单里面有个循环。把ID和AR_Notes提交到Action里面的这个addAttendancereGister()方法下.
addAttendancereGister()方法如下:

public ActionForward addAttendancereGister(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("gb2312");
response.setContentType("text/html");
String ID[] = request.getParameterValues("ID");//因为不是一个值所以我用数组取过来了
String AR_Notes[] =request.getParameterValues("AR_Notes");
然后我想用 这条插入语句把取过来的ID和AR_Notes的信息都插入到ZC_Attendanceregister这个表里面
String sql ="insert ZC_Attendanceregister select 'ID','AR_Notes' union all select 'ID','AR_Notes'";
}

大家帮帮忙啊 如果不清楚的 说下哈!
...全文
181 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayuan231 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qysnowqy 的回复:]
3楼的循环可以实现,不懂楼主的sql语句=。=
[/Quote]
顶你
快乐的2 2010-07-27
  • 打赏
  • 举报
回复
使用PreparedStatement正常插入数据库就可以了。
难道有什么问题么?
qysnowqy 2010-07-27
  • 打赏
  • 举报
回复
3楼的循环可以实现,不懂楼主的sql语句=。=
panhaichun 2010-07-27
  • 打赏
  • 举报
回复
String sql = "INSERT INTO ZC_Attendanceregister VALUES(?, ?)";
PrepareStatement pstmt = connection.preparedStatement(sql);
for (i...) {
pstmt.setString(1, ID[i]);
pstmt.setString(2,AR_notes[i]);
pstmt.addBatch();
}
pstmt.executeBatch();
yinxiaoqi 2010-07-27
  • 打赏
  • 举报
回复
我的问题已经OK啦 谢谢大家啦!
xianaofei 2010-07-27
  • 打赏
  • 举报
回复
很简单的啊 直接执行就OK了 加个事物处理
dahaizwl 2010-07-27
  • 打赏
  • 举报
回复
对不住啊,搞错啦!你那个jsp页面做着对着呢,是我搞错啦!
dahaizwl 2010-07-27
  • 打赏
  • 举报
回复
<form action="/NMSoftware/attendanceregister.do?method=addAttendancereGister" method="post">
for(int i=0;i<10;i++){
<input type="text" name="ID" value="<%=i%>">
<input type="text" name="AR_Notes" value="<%=i%>">

}

楼主,你这个jsp页面有错误。
你这么在后台得到的数据,不是一个数组类型,只是一个String。你可以调试一下,看看你这个ID和AR_Notes中是否有数据,有的话,是几个。
你这个是不能这样赋值的。
比如:
第一次赋值:
ID文本框中的值:1 AR_Notes文本框的值:1
第二次:
ID文本框中的值:2 AR_Notes文本框的值:2
(第一次的值,被第二次的值替换啦,因为他们都是给同一个文本框赋值)
最后就是:ID为10, AR_Notes为10。


批处理插入的话就是用3楼的方法:
String sql = "INSERT INTO ZC_Attendanceregister VALUES(?, ?)";
PrepareStatement pstmt = connection.preparedStatement(sql);
for (int i = 0; i < (ID.length > AR_notes.length ? ID.length : AR_notes.length; i++)) {
pstmt.setString(1, ID[i]);
pstmt.setString(2,AR_notes[i]);
pstmt.addBatch();
}
pstmt.executeBatch();


不知道这样写你是否明白啦,最好自己琢磨一下,然后再写写。
yinxiaoqi 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 chooseforget 的回复:]
楼主你到底想干嘛!!!!!!!
[/Quote]

String sql = "insert into ZC_Attendanceregister values(?,?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
for(i...){
pstmt.setInt(2, ID[i]);//这句有错误类型的问题。
}
chooseforget 2010-07-27
  • 打赏
  • 举报
回复
楼主你到底想干嘛!!!!!!!
yinxiaoqi 2010-07-27
  • 打赏
  • 举报
回复
我把 ID 去过来

String ID[] = request.getParameterValues("ID");
pstmt.setInt(2, ID[io]);//The method setInt(int, int) in the type PreparedStatement is not applicable for the arguments (int,
String)

但是这句错误 应该类型的问题 改怎么解决呢。英文是提示的错误。
qysnowqy 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yinxiaoqi 的回复:]

PrepareStatement.java 谁有这个类 发下呗. 好用马上给分!
[/Quote]
不懂,PrepareStatement不就是java.sql包下的么?
a476249912 2010-07-27
  • 打赏
  • 举报
回复
用通用的方法吧,循环,别搞特殊化,显得你没经验
Ade子夜 2010-07-27
  • 打赏
  • 举报
回复
和正常插入一样啊!!只是循环而已!!!
heruyipapa 2010-07-27
  • 打赏
  • 举报
回复
<form action="/NMSoftware/attendanceregister.do?method=addAttendancereGister" method="post">
for(int i=0;i<10;i++){
<input type="text" name="ID<%=i%>" value="<%=i%>">
<input type="text" name="AR_Notes<%=i%>" value="<%=i%>">
}

<input type="submit">
</form>


这个页面有个表单里面有个循环。把ID和AR_Notes提交到Action里面的这个addAttendancereGister()方法下.
addAttendancereGister()方法如下:
Java code
public ActionForward addAttendancereGister(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("gb2312");
response.setContentType("text/html");
for(int i=0;i<10;i++){
String ID = request.getParameter("ID"+i);
//print ID
}
}
yinxiaoqi 2010-07-27
  • 打赏
  • 举报
回复
PrepareStatement.java 谁有这个类 发下呗. 好用马上给分!
qysnowqy 2010-07-27
  • 打赏
  • 举报
回复
你的id和AR_Notes不是出现的次数一样么?
a6282867 2010-07-27
  • 打赏
  • 举报
回复
判断两个数组长度,循环数组长度小的。。。
luozhangwen 2010-07-27
  • 打赏
  • 举报
回复
你把这里的table都换成一个就OK了.
luozhangwen 2010-07-27
  • 打赏
  • 举报
回复
[Q]怎么实现一条记录根据条件多表插入
[A]9i以上可以通过Insert all语句完成,仅仅是一个语句,如:
INSERT ALL
WHEN (id=1) THEN
INTO table_1 (id, name)
values(id,name)
WHEN (id=2) THEN
INTO table_2 (id, name)
values(id,name)
ELSE
INTO table_other (id, name)
values(id, name)
SELECT id,name
FROM a;
如果没有条件的话,则完成每个表的插入,如
INSERT ALL
INTO table_1 (id, name)
values(id,name)
INTO table_2 (id, name)
values(id,name)
INTO table_other (id, name)
values(id, name)
SELECT id,name
FROM a;
加载更多回复(1)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧