【发布时间】:2010-12-24 13:51:11
【问题描述】:
我想为我的 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");
}
如果我执行了注释块,则应用程序可以正常工作。但是插入块没有。
知道了,为什么我无法插入、更新或删除数据库记录?
【问题讨论】:
-
您应该查看异常的内容,而不是捕获异常。它应该让您知道出了什么问题。
-
你说的不起作用是什么意思?
-
Do catch(Exception ex) 并显示 ex.Message,或查看 ex 详细信息
-
你不应该使用访问,你的应用程序会变慢并且数据完整性不稳定,如果你使用MS-SQL你将不得不迁移整个数据库。如果您需要可嵌入的数据库,请使用 FireBird Embedded。它还有一个额外的好处,即您可以在必要时将可嵌入的 db 文件插入到完整的 firebird 服务器中,并且它是跨平台的。
-
@Quandary:@Abilash 没有使用 Access——他使用的是 Jet,它恰好安装在从 Win2000 开始的所有 Windows 副本上。这是使用它的一大优势,它无需安装即可用于您的应用程序。它也是非常适合大量应用程序的数据库引擎。添加对 SQL Server 或 Firebird 的依赖会带来安装/配置/管理问题,而对于任何特定的应用程序,它可能不会带来任何有用的好处。
标签: c# sql ms-access ado.net oledb