怎么往 Access / Oracle 数据库里一次性插入多条数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么往 Access / Oracle 数据库里一次性插入多条数据相关的知识,希望对你有一定的参考价值。

比如有这个
insert into HF_IMG_THEME(_id, parentId, imgName) values(0,0,'1.jpg');
insert into HF_IMG_THEME(_id, parentId, imgName) values(1,1,'2.jpg');
有什么语句可以一次插入吗?

可以利用excel进行多条数据的输入,保存为表格文件,同时利用access导入表格的形式来实现。

1.首先创建新建数据库。


2.点击头部导航的“外部数据”。

3.找到头部导航的“导入Access数据库”,左键点击打开。

4.左侧选择要导入外部数据库的方式,点击浏览,找到外部数据库存放的路径。

5.选择外部数据库要添加的表,我们在这选择“info”和“news”2张表做演示。

6.点击“保存导入”后,你就会发现,原先你要创建的表中多了“info”和“news”2张表。到此,外部数据库表成功导入。

参考技术A 不能直接在Access中写多行语句;
可以在SQL中创建一个表,然后将你写的这个多行语句放到SQL中执行;
右键选择导出数据,根据向导第三步选择Access即可导出到Access中。
参考技术B 如果是从一张表到查找数据存放到另一张表的话使用
select * into NewTable from oldTable
如果直接是数据的话,那你可以写个存储过程,完了写个循环。把数据都存放在一个结构体中、或者数组中就可以了追问

不是别的表,就是一堆数据,第一往表里添加。

追答

那就建立个数组或者结构体,把数据存放进去,完了写个存储过程,让程序去调用

参考技术C 有的,在oracle中你可以把要插入的记录用.sql的文件先编辑好,然后调用sql脚本就行了,不管多少记录都一个一次性插入完成。
还有就是用存储过程实现,因为这三个字段的名字是递增的,可以用三个变量来表示。本回答被提问者和网友采纳
参考技术D 1、如果数据是手工输入的,一条一条的插入也不会有问题。
2、如果是多笔插入,那就是说你可能需要把某资料表中符合条件的资料插入到另外一个表中。
3、如果属于上面第2条,则你可以在access查询中做一个新增查询,然后在某窗体中做个按钮,写个程序去执行这个查询,执行前先在窗体中输入你的查询条件,比如日期段。这样,无论你要插入多少条资料,都是一次性插入了。
4、如果你要的是我说的3的方式,而且有不懂,可以追问。

用Java连接Oracle ,可以用Java往Oracle写入数据,但是用sql往Oracle插入数据时,关闭了再打开,数据消失

但用Java插入的数据就不会消失,是什么问题呢? (没有财富了)
我的代码是这样的,麻烦各位大神帮忙看一下
try
conn=DriverManager.getConnection(dburl,dbuser,password);
sql=conn.createStatement();
sql.executeUpdate("INSERT INTO teacher values('2009307','张小小','男','ABCD','623371','dfds')");
conn.close();
sql.close();
catch(SQLException e)System.out.print(e);

可以使用 %rowcount 返回受影响的行数
SQL%rowcount --用户成功提取数据的行数
示例:向表中插入一行数据,询问是否插入成功.
declare
iCount int:=0;
begin
insert into place values(2,'beijing');
DBMS_output.put_line('游标所影响的行数:'||SQL%rowcount);
if SQL%NotFount then
DBMS_output.put_line('NotFount为真);
else
DBMS_output.put_line('NofFount为假');
end if;

if SQL%Fount then
DBMS_output.put_line('Fount为真);
else
DBMS_output.put_line('Fount为假');
end if;
if SQL%isopen then
DBMS_output.put_line('isOpen为真);
else
DBMS_output.put_line('isOpen为假');
end if;

isCount:=SQL%rowcount;
DBMS_output.put_line('影响了'||isCount||'行');
end;
参考技术A 你connection的setautocommit是不是设了false

执行完语句之后加上con.commit();

或者sql语句改改

begin

sqlStr ......

commit ;

end ;
参考技术B 估计是你语句最后没有加入commit; 没有提交的缘故吧 参考技术C 就是没用自动提交,也没有手动提交
conn.commit();
sql.close();
conn.close();
改成这样就可以,另,建议先管Statement再关Connection,否则关Statement时候可能会报错
参考技术D 通过编程语言去连接数据库(以java为例),接口有jdbc或hibernate,会自动提交
如果是用jdbc,在weblogic或was中会有缓存池的存在。
而使用hibernate框架,其也自带2级缓存机制。
而sql在使用pl/sql或toad去执行sql后,更新的数据只是会在redo里有记录,正不会真实提交到undo中,只有commit之后提交才可
第5个回答  2010-08-28 用sql往Oracle插入数据时,默认不是提交的,你需要手动提交。
比如执行sql后你需要输入 commit 进行提交
再提一点,你这段代码也太水了
try
conn=DriverManager.getConnection(dburl,dbuser,password);
sql=conn.createStatement();
sql.executeUpdate("INSERT INTO teacher values('2009307','张小小','男','ABCD','623371','dfds')");
conn.close();
sql.close();
catch(SQLException e)System.out.print(e);
1、将关闭语句放到finally里面去
2、关闭顺序应该是先关闭 statement,在关闭conn,先打开的后关,后打开的先关,就跟关门一样。

以上是关于怎么往 Access / Oracle 数据库里一次性插入多条数据的主要内容,如果未能解决你的问题,请参考以下文章

oracle创建一个序列,让他一直显示五位怎么做,比如00001/00002/00003.......

如何往数据库中插入日期格式的数据

高手来!怎么往虚拟主机里添加数据库?

java里怎么往oracle数据库插入具体的时间

Access数据表怎么导出.csv格式的文件并附加到oracle数据库?

如何在SQL SEVER 查询结果中,选择前10条记录,或者前10%的记录,等等,不要ACCESS,OR ORACLE 的方法~ 谢谢