Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用.NET中的OleDb命名空间连接到Access数据库?_C#_Sql_Ms Access_Ado.net_Oledb - Fatal编程技术网

C# 如何使用.NET中的OleDb命名空间连接到Access数据库?

C# 如何使用.NET中的OleDb命名空间连接到Access数据库?,c#,sql,ms-access,ado.net,oledb,C#,Sql,Ms Access,Ado.net,Oledb,我想为我的Windows窗体应用程序使用Access数据库。用C写的 我已经使用OleDb名称空间进行连接,并且我能够使用OleDbConnection和ExecuteReader对象从源中选择记录。 但是,我还不能插入、更新或删除记录 我的代码如下: OleDbConnection con = new OleDbConnection(strCon); try { string con="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=

我想为我的Windows窗体应用程序使用Access数据库。用C写的 我已经使用OleDb名称空间进行连接,并且我能够使用OleDbConnection和ExecuteReader对象从源中选择记录。 但是,我还不能插入、更新或删除记录

我的代码如下:

 OleDbConnection con = new OleDbConnection(strCon);

 try
 {
     string con="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xyz.mdb;Persist Security Info=True";

     con.Open();

     OleDbCommand com = new OleDbCommand("INSERT INTO DPMaster(DPID, DPName, ClientID, ClientName) VALUES('53', 'we', '41', 'aw')", con);

     int a = com.ExecuteNonQuery();

     //OleDbCommand com = new OleDbCommand("SELECT * FROM DPMaster", con);
     //OleDbDataReader dr = com.ExecuteReader();

     //while (dr.Read())
     //{
     //    MessageBox.Show(dr[2].ToString());
     //}

     MessageBox.Show(a.ToString());
 }
 catch
 {
     MessageBox.Show("cannot");
 }
如果执行注释块,则应用程序工作正常。但是插入块没有


知道这一点,为什么我无法插入、更新或删除数据库记录?

我自己遇到的问题如下:

您已将mdb文件添加到解决方案中,每次运行程序时,它都会复制到调试文件夹中

因此,您可以从中进行选择,但删除行不会影响解决方案中的原始文件


检查一下。

我自己遇到的问题如下:

您已将mdb文件添加到解决方案中,每次运行程序时,它都会复制到调试文件夹中

因此,您可以从中进行选择,但删除行不会影响解决方案中的原始文件


检查它。

首先,不要扼杀你的异常。最好让您的异常冒泡起来,这样您就可以获得有关哪些异常工作不正常的重要信息。最好写下:

con.Open();
OleDbCommand com = new OleDbCommand("INSERT INTO DPMaster(DPID,DPName,ClientID,ClientName) VALUES('53','we','41','aw')", con);

int a = com.ExecuteNonQuery();

第二,尽量使用块,因为这些块将处理不再需要的对象。因此,您的代码应该如下所示:

using (OleDbConnection con = new OleDbConnection(conStr))
    using (OleDbCommand com = new OleDbCommand("INSERT INTO DPMaster(DPID,DPName,ClientID,ClientName) VALUES('53','we','41','aw')", con) {

        con.Open();

        int a = com.ExecuteNonQuery();

        MessageBox.Show(a.ToString());
    }

使用此代码,您将更有可能在异常冒泡时了解出了什么问题,此外,一旦退出使用块的范围,所使用的资源将随着对象的处置而释放。

首先,不要扼杀您的异常。最好让您的异常冒泡起来,这样您就可以获得有关哪些异常工作不正常的重要信息。最好写下:

con.Open();
OleDbCommand com = new OleDbCommand("INSERT INTO DPMaster(DPID,DPName,ClientID,ClientName) VALUES('53','we','41','aw')", con);

int a = com.ExecuteNonQuery();

第二,尽量使用块,因为这些块将处理不再需要的对象。因此,您的代码应该如下所示:

using (OleDbConnection con = new OleDbConnection(conStr))
    using (OleDbCommand com = new OleDbCommand("INSERT INTO DPMaster(DPID,DPName,ClientID,ClientName) VALUES('53','we','41','aw')", con) {

        con.Open();

        int a = com.ExecuteNonQuery();

        MessageBox.Show(a.ToString());
    }

有了这段代码,当异常冒泡时,您将更有可能知道出了什么问题,而且,一旦您退出使用块的范围,所使用的资源将随着对象的处置而释放。

您应该看到异常的含义,而不是捕捉异常。它应该能告诉您出了什么问题。什么是不工作?执行catchException ex和show ex.Message,或查看ex Details如果不使用access,您的应用程序将变得缓慢,数据完整性不稳定,如果使用MS-SQL,您将不得不迁移整个数据库。如果需要嵌入式数据库,请使用FireBird embedded。它还有一个额外的好处,即一旦有必要,您可以将可嵌入的db文件插入完整的firebird服务器,并且它是跨平台的。@困惑:@Abilash没有使用Access-他使用的是Jet,它恰好安装在Win2000上的所有Windows副本上。这是使用它的一个巨大优势,它可以用于您的应用程序而无需安装。它也是一个非常适合于所有应用程序的数据库引擎。添加对SQL Server或Firebird的依赖会带来安装/配置/管理问题,而对于任何特定的应用程序,它可能不会带来任何有用的好处。与其捕获异常,不如查看异常说明。它应该能告诉您出了什么问题。什么是不工作?执行catchException ex和show ex.Message,或查看ex Details如果不使用access,您的应用程序将变得缓慢,数据完整性不稳定,如果使用MS-SQL,您将不得不迁移整个数据库。如果需要嵌入式数据库,请使用FireBird embedded。它还有一个额外的好处,即一旦有必要,您可以将可嵌入的db文件插入完整的firebird服务器,并且它是跨平台的。@困惑:@Abilash没有使用Access-他使用的是Jet,它恰好安装在Win2000上的所有Windows副本上。这是使用它的一个巨大优势,它可以用于您的应用程序而无需安装。它也是一个非常适合于所有应用程序的数据库引擎。添加对SQL Server或Firebird的依赖性会带来安装/配置/管理问题,而对于任何特定的应用程序,它可能不会带来任何有用的好处。+1-由于它是一个数据库,我从未想过要将其添加到我的解决方案中,所以我永远不会把这当作一个可能的问题。正如你说的,我已经从项目中删除了数据库,并从其他位置使用。现在它工作正常了。这些记录被插入到数据库中。非常感谢Jane..+1-因为它是一个数据库,我从来没有想过要将它添加到我的解决方案中,所以从来没有
r会认为这是一个可能的问题。正如你所说,我已经从项目中删除了数据库,并从其他位置使用。现在工作正常。这些记录被插入到数据库中。非常感谢Jane.我粘贴的代码运行良好,没有任何错误!!但是记录没有插入到数据库中!!我粘贴的代码工作正常,没有任何错误!!但是记录没有插入到数据库中!!