0 0

向access2007插入数据时,显示成功,然而最后一次插入的数据无法更新到数据库10

无论插入多少数据,均无报错,全部显示插入成功,然而最后一组数据无法进入数据库。
public class MdbHelper 
{
	
	private Connection conn;
	private Statement stmt;
	private PreparedStatement ps;
	private String dataBasePathString = "";
	private boolean isConnected = false;
	
	public void connect(String mdbPath) 
	{
		try 
		{  
			//mdb路径未变且连接有效,则无需再连接
			if(mdbPath == dataBasePathString && isConnected)// && conn.isValid(100))
				return;
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = "jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb, *.accdb)};DBQ=" + mdbPath;//C:\\Test.mdb";       
            conn = DriverManager.getConnection(url, "", "");
            dataBasePathString = mdbPath;//将mdb路径更新到成员变量中,以供getCommunity()调用;
            isConnected = true;
            //System.out.println("Connect succeed.");
		}
		catch (Exception e) 
		{
			e.printStackTrace(); 
			System.out.println(e.getMessage());
		}
	}
	
	public void disConnect() throws SQLException 
	{
		conn.close();
		isConnected = false;
	}
	
	
	public ResultSet query(String sqlString) throws SQLException 
	{
		stmt = this.conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,   
                ResultSet.CONCUR_UPDATABLE);
		//System.out.println("query succeed.");
		return this.stmt.executeQuery(sqlString);
	}
	
	public int execUpdate(String sqlString) throws SQLException, Exception
	{
		ps = conn.prepareStatement(sqlString);
		int result = ps.executeUpdate(); 
		ps.close();  
		//System.out.println("exec result : + " + ps.execute());
		//Thread.currentThread().sleep(500);
		
		System.out.println("execUpdate result : " + result + " / " + sqlString);
		return result;
	}
}


import java.sql.SQLException;
import java.util.Timer;

public class Start 
{

	public static void main(String[] args) 
    {
		try 
		{
			Config config = new Config();
			config.init();
			addTaskTest() ;
			
		}
		catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
	
	
	private static void addTaskTest() 
	{
		MdbHelper mdbHelper  = new MdbHelper();
		mdbHelper.connect(Config.getDataBasePath());
		for (int i = 1; i <= 20; i++) 
		{
			String insertString = "insert into taskTable values('" + i + "','" + i + "','" + i + "')";
			try {
				int updatedRowNum = mdbHelper.execUpdate(insertString);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}		
	}
}


控制台输出:
execUpdate result : 1 / insert into taskTable values('1','1','1')
execUpdate result : 1 / insert into taskTable values('2','2','2')
execUpdate result : 1 / insert into taskTable values('3','3','3')
execUpdate result : 1 / insert into taskTable values('4','4','4')
execUpdate result : 1 / insert into taskTable values('5','5','5')
execUpdate result : 1 / insert into taskTable values('6','6','6')
execUpdate result : 1 / insert into taskTable values('7','7','7')
execUpdate result : 1 / insert into taskTable values('8','8','8')
execUpdate result : 1 / insert into taskTable values('9','9','9')
execUpdate result : 1 / insert into taskTable values('10','10','10')
execUpdate result : 1 / insert into taskTable values('11','11','11')
execUpdate result : 1 / insert into taskTable values('12','12','12')
execUpdate result : 1 / insert into taskTable values('13','13','13')
execUpdate result : 1 / insert into taskTable values('14','14','14')
execUpdate result : 1 / insert into taskTable values('15','15','15')
execUpdate result : 1 / insert into taskTable values('16','16','16')
execUpdate result : 1 / insert into taskTable values('17','17','17')
execUpdate result : 1 / insert into taskTable values('18','18','18')
execUpdate result : 1 / insert into taskTable values('19','19','19')
execUpdate result : 1 / insert into taskTable values('20','20','20')

然而数据库中只有1--19的记录。不管插入多少,总是少最后一条数据。



然而,我在execUpdate()函数中加一句代码:
Thread.currentThread().sleep(500);
结果就正常了。这是为什么?在网上实在是没有搜到类似情况,谢谢!
2014年3月23日 13:46

1个答案 按时间排序 按投票排序

0 0

连接需要关闭下的吧。试试看

2014年3月23日 18:08

相关推荐

    详细讲解C#在向ACCESS中插入数据时判断数据是否已存在.pdf

    本文将详细介绍如何在使用C#语言时,通过SQL语句向Microsoft Access数据库插入数据,并在此过程中判断所需插入的数据是否已经存在。如果数据不存在,则继续执行插入操作;如果存在,则不执行插入操作。 首先,要...

    力控与access数据库.docx

    在本文中,我们将探讨力控与Access数据库的交互技术,包括新建Access数据库、创建数据表、变量绑定、数据库连接、数据插入、断开连接等操作。 一、创建Access数据库 首先,我们需要新建一个Access数据库。在力控中...

    C#大数据批量插入Access程序

    Access数据库虽然在处理大规模数据时可能不如SQL Server等大型数据库系统强大,但在某些场景下,如小型项目或临时存储,它的轻量级和易用性仍然极具吸引力。C#与Access结合,通过ADO.NET库可以实现快速的数据操作。 ...

    Qt中操作数据库例子-插入数据

    QSqlTableModel是Qt提供的一种用于数据库操作的模型类,它方便地实现了数据的CRUD(创建、读取、更新和删除)操作,并且与QTableView等视图类完美结合,提供了直观的数据展示。 首先,确保你的系统已安装了Qt库,...

    C# Access 大数据量 批量 效率 快速 导入

    Access作为一个小型数据库管理系统,虽然在处理小规模数据时表现出色,但在面对大量数据时,如果操作不当,性能可能会急剧下降。因此,优化导入过程至关重要。 在传统的数据插入方法中,我们通常会逐条插入记录,...

    JAVA中向数据库中插入数据的源代码

    在Java编程中,向数据库插入数据是常见的操作之一,尤其在构建桌面应用或者Web应用时。本示例将重点讲解如何使用Java与Microsoft Access数据库进行交互,实现数据的插入功能。Access是一种轻量级的关系型数据库管理...

    asp将本地excel数据上传到access数据库中,也可用与其它数据库

    9. 应用场景:这种技术不仅适用于项目中的一次性数据迁移,也可以用于定期的数据同步,比如每天从Excel报表自动导入到Access数据库,便于进一步的数据分析和报告生成。 10. 打包资源:提供的"ExcelToAccess"压缩包...

    C# 做的一个将数据简单插入到access数据库中的demo。

    本示例("简单插入放射Acess")演示了如何使用C#语言将数据简单地插入到Access数据库中。这个过程涉及到ADO.NET框架,它提供了与各种数据库进行交互的类库。 1. **C#与ADO.NET** C#是微软开发的一种面向对象的编程...

    access数据库的插入列子

    在IT领域,Access数据库是微软开发的一款关系型数据库管理系统(RDBMS),它以其易用性和与Microsoft Office套件的紧密集成而广受欢迎。本文将深入探讨如何在Access数据库中进行数据插入操作,通过实例来阐述相关...

    使用VB.NET对ACCESS数据库进行添加,删除,插入,修改,查询等用法

    在VB.NET中与ACCESS数据库进行交互是初学者和专业开发者常用的一种技术,因为ACCESS数据库简单易用,适合小型项目。本教程将详细讲解如何利用VB.NET进行添加、删除、插入、修改和查询等基本操作。 首先,我们需要在...

    将datagridview内容直接更新到ACCESS数据库中

    在IT领域,尤其是在软件开发与数据库管理中,将DataGridView中的内容直接更新至ACCESS数据库是一项常见且实用的操作。本文将深入探讨这一过程的关键知识点,包括所涉及的技术、代码解析以及实现步骤。 ### 技术背景...

    保存到数据库程序(VB6.0源代码编写)可将数据保存到access数据库中

    标题中的“保存到数据库程序(VB6.0源代码编写)”指的是使用Visual Basic 6.0编程语言编写的程序,其主要功能是将数据存储到Access数据库中。Access数据库是微软开发的一种关系型数据库管理系统(RDBMS),适用于小型...

    力控与access数据库.pdf

    本文介绍了如何使用力控与Access数据库进行数据交互,包括新建力控工程、新建Access数据库、力控变量写入到Access数据库、SQLConnect函数、SQLInsert函数、SQLDisconnect函数和力控与Access数据库绑定等内容。

    VB 输入数据到ACCESS数据库

    标题“VB 输入数据到ACCESS数据库”指的是使用Visual Basic (VB)编程语言来实现与Microsoft Access数据库的交互,向Access数据库中添加新的数据记录。在VB中,我们可以利用ADO(ActiveX Data Objects)来连接和操作...

    C# Excel文件导入到Access数据库

    本主题聚焦于使用C#编程语言将Excel文件的数据导入到Access数据库的过程,这是一个常见的数据处理需求,特别是在数据整合和分析时。以下是对这一过程的详细阐述。 首先,我们需要理解C#的基础知识。C#是一种面向...

    C#实现Access数据库中数据的修改

    Access是一款由Microsoft开发的关系型数据库管理系统,它易于使用且与.NET Framework(尤其是C#)有良好的集成,使得开发者能够方便地执行数据库操作。 在C#中,我们可以利用ADO.NET(Microsoft的数据访问技术)来...

    ACCESS和SQL批量插入数据工具

    这款工具专为数据库管理员和开发人员设计,用于快速、高效地向ACCESS和SQL Server数据库中批量插入数据,尤其在进行负荷测试时,它能显著提高工作效率。 首先,我们来了解一下ACCESS。ACCESS是Microsoft Office套件...

    在Word中插入Access、SQL数据库数据.docx

    - 当数据库中的数据发生变化时,可以右键单击Word文档中的数据区域,选择“刷新”选项以更新Word文档中的数据。 #### 四、在Word中插入SQL Server数据库数据 1. **使用“数据连接向导”** - 单击“插入数据库”...

    删除Access数据库中重复的数据

    在使用Microsoft Access构建数据库时,有时可能会出现重复的数据,这可能会导致数据不一致性和效率下降。本文将深入探讨如何在Access数据库中识别并删除这些重复的记录,以保持数据的准确性和完整性。 首先,我们...

    access数据库中添加与读取图片

    在Access数据库中添加和读取图片是常见的操作,特别是在存储包含多媒体内容的数据时。Access作为一个关系型数据库管理系统,虽然主要用于处理结构化的文本和数字数据,但也可以有效地管理和展示非结构化数据,如图像...

Global site tag (gtag.js) - Google Analytics