日期:2014-05-19  浏览次数:20494 次

关于access插入数据返回值 和 数据对比删除???
问题一:
access数据库
假如a表只有中有2个字段
id和name   id为自动编号       name为文本
怎样在insert   into   表   values(name)后
直接返回id的值     不希望通过select来获得!
有没有什么最简单或有效的方法。。
------------------------
问题二:
有个a文件夹,里面有n个文件;
数据库b表中有个   tt   字段   储存着a文件夹的某些文件名!
实现根据读取b表中tt字段值   删除a文件夹tt值没有的所有文件!
有什么方法来实现执行效率最快!
-------------
新手学习中!。。。。。。。。。


------解决方案--------------------
1.
insert into 表 values(name)
SELECT SCOPE_IDENTITY()
2.
先读取出文件名(把此计算为路径)
用IO操作删除文件即可。
File、FileInfo类都可做到。
------解决方案--------------------
一、可以把INSERT语句写在存储过程中,当插入完成后,马上SELECT SCOPE_IDENTITY(),这样,将SELECT SCOPE_IDENTITY()出的ID以返回值或输出参数的形式返回,这样,你接收这个值就可以了哈
二、你可能先得把文件夹里面的文件先读取出来,放在一个数组里面,然后再把数据库里面的文件名读出来,然后进行比较,将比较剩下的文件名传给一个函数,那个函数的作用就是删除文件咯,FILE类里面有方法
------解决方案--------------------
第一个问题,以上已经说了.

第二个关于效率的问题,我也学习下.顺便说下我的想法.
遍历出文件夹内的文件名称,存放入数据库中(新建一个同b表结构相同的c表),然后select在c表而不在b表中的数据.select出这个临时表之后,再根据此表遍历删除文件夹的文件.
原理就是结合系统和数据库两边都出力工作,并且尽量减少遍历次数的原则.
------解决方案--------------------
你可能先得把文件夹里面的文件先读取出来,放在一个数组里面,然后再把数据库里面的文件名读出来,然后进行比较,将比较剩下的文件名传给一个函数,那个函数的作用就是删除文件咯,FILE类里面有方法,这个办法比较可行!
------解决方案--------------------
Access数据库里不能写存储过程,也不能用SELECT SCOPE_IDENTITY()

所以lz还是Select 吧.

第二个问题,先遍历文件夹,取出所有文件名,放在一数组里,
然后读数据库,
while(dr.read())
{
替换有的文件名为空,
}