C# 如何连接到 MS Access 2007

2024-01-09

我在连接到 MS Access DB 2007 时遇到问题。代码:

private void btnSave_Click(object sender, EventArgs e)
    {
        OleDbConnection Conn = new OleDbConnection();

        try
        {
            string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Directory.GetCurrentDirectory() +"\\dvd_manager.accdb;Persist Security Info=False;";
            Conn.ConnectionString = conn;

            Conn.Open();

            int i = cbbLocatie.SelectedIndex + 65;
            char c = (char)i;

            string sql = "INSERT INTO DVD (titel, locatie)VALUES(@titel, @locatie)";
            OleDbCommand Com = new OleDbCommand();
            Com.CommandText = sql;
            Com.Connection = Conn;

            OleDbParameter Param = new OleDbParameter("@titel", txtTitle.Text);
            Com.Parameters.Add(Param);

            Param = new OleDbParameter("@locatie", c);
            Com.Parameters.Add(Param);

            Com.ExecuteNonQuery();
            Conn.Close();

            MessageBox.Show("Data is opgeslagen " + sql);
        }
        catch (Exception ex)
        {
            MessageBox.Show("Fout opgetreden: " + ex.Message);
        }
        finally
        {
            Conn.Close();
        }
    }

当我运行此代码时,会出现消息框。这应该意味着我的数据已插入。但是当我打开 accdb 文件时,没有插入数据。我究竟做错了什么?

Thnx

编辑: ExecuteNonQuery()的返回值是1(我编辑我的帖子,因为我无法添加任何评论,当我单击添加评论时,该框不会显示..)

编辑2: 我创建了一个具有 Title 和 Location 属性的类。代码: 私人无效btnSave_Click(对象发送者,EventArgs e) { OleDbConnection Conn = new OleDbConnection();

try
{
    string conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ Directory.GetCurrentDirectory() +"\\dvd_manager.accdb;Persist Security Info=False;";
    Conn.ConnectionString = conn;

    // Create object
    Medium M = new Medium();
    int i = cbbLocatie.SelectedIndex + 65;
    char c = (char)i;

    M.Location = c;
    M.Title = txtTitle.Text;

    Conn.Open();

    string sql = "INSERT INTO DVD (titel, locatie)VALUES(@titel, @locatie)";
    OleDbCommand Com = new OleDbCommand();
    Com.CommandText = sql;
    Com.Connection = Conn;

    OleDbParameter Param1 = new OleDbParameter("@titel", M.Title);
    Com.Parameters.Add(Param1);

    OleDbParameter Param2 = new OleDbParameter("@locatie", M.Location);
    Com.Parameters.Add(Param2);

    int ret = Com.ExecuteNonQuery();
    Conn.Close();

    MessageBox.Show("Data is opgeslagen " + ret);
}
catch (OleDbException ex)
{
    MessageBox.Show(ex.Message);
}
catch (Exception ex)
{
    MessageBox.Show("Fout opgetreden: " + ex.Message);
}
finally
{
    Conn.Close();
}

}

由于我仍然无法单击“添加注释”按钮,因此这是带有无名 sql 参数的新代码:

// some code
Conn.Open();

string sql = "INSERT INTO DVD (titel, locatie)VALUES(?, ?)";
OleDbCommand Com = new OleDbCommand();
Com.CommandText = sql;
Com.Connection = Conn;

OleDbParameter Param1 = new OleDbParameter("@p1", OleDbType.VarChar, 1);
Param1.Value = M.Title;
Com.Parameters.Add(Param1);

OleDbParameter Param2 = new OleDbParameter("@p2", OleDbType.VarChar, 255);
Param2.Value = M.Location;
Com.Parameters.Add(Param2);

int ret = Com.ExecuteNonQuery();
Conn.Close();
// morde code

ExecuteNonQuery 将返回一个 int 值,指示受影响的行数。我要做的第一件事就是检查退货。 ExecuteNonQuery 可以执行并且不影响任何行,这不会触发捕获。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 如何连接到 MS Access 2007 的相关文章

  • 如何使用 ASP.NET MVC 进行 HTTP 调用?

    我正在尝试做的事情 我试图练习进行 HTTP 调用 如果这就是它的名字 来自一个简单的 ASP NET MVC Web 应用程序 为此 我尝试从以下位置获取天气详细信息打开天气地图 http openweathermap org appid
  • MVC Core IActionResult 含义

    什么是IActionResult 我尝试查看 MSDN 和其他网站 但需要通用 常见 易于理解的答案 MSDN IActionResult https learn microsoft com en us dotnet api microso
  • 为什么在 C# 中成员初始值设定项中不允许这样做,但在 VB.Net Me 中允许

    我正在将 VB Net 应用程序转换为 C 并注意到在 VB Net 代码中 有一个私有成员变量 它是使用Me像这样 Private m ClassA As New MyCollection Of ClassA Me 当我将其转换为 C 代
  • 用 C# 启动 Windows 服务

    我想启动一个刚刚安装的Windows服务 ServiceBase ServicesToRun if bool Parse System Configuration ConfigurationManager AppSettings RunSe
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • 使用静态类型代替变量

    当您的项目不使用命名空间时 有什么方法可以告诉编译器使用静态类型而不是变量吗 例如 我有一个名为 User 的类 它具有各种静态和非静态方法 假设调用了其中一个静态方法GetUser 我想称之为User GetUser 方法来自一个方法 该
  • C++ 非类型参数包扩展

    我正在编写由单一类型参数化的模板函数 并且具有可变数量的相同类型 而不是不同类型 的参数 它应该检查第一个值是否在其余值中 我想这样写 include
  • 如何从 List 中的字符串中删除数字/数字?

    我有一个字符串列表 List
  • 异步方法中的异常未被捕获

    下面的代码没有捕获我的OperationCancelEException 它是通过调用抛出的ct ThrowIfCancellationRequested public partial class TitleWindow Window IA
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 控制器中的异常处理 (ASP.NET MVC)

    当您自己的代码抛出异常并从控制器中的操作调用时 应该如何处理 我看到很多最佳实践的例子 其中根本没有 try catch 语句 例如 从存储库访问数据 public ViewResult Index IList
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • 需要使用 openssl 加密和解密文件的示例 C 代码

    我正在用 Linux C 编写代码 我需要使用以下命令来加密和解密文件 openssl 目前 我使用系统命令 des3 e nosalt k 0123456789012345 in inp file out out file 进行加密 使用
  • 将小数格式化为两位或整数

    对于 10 我想要 10 而不是 10 00 对于 10 11 我想要 10 11 没有代码可以实现吗 即通过指定格式字符串类似于 0 N2 decimal num 10 11M Console WriteLine num ToString
  • 在代码中而不是 XAML 中呈现 UserControl

    我想用RenderTargetBitmap将 UserControl 呈现为位图 而无需为其编写 XAML 当我这样做时 我得到一张空白图像 我是否错过了关键的一步 ValTool Controls VideoFisheyeOverlayC
  • 致命错误 C1001:编译器中发生内部错误(编译器文件“msc1.cpp”,第 1325 行)

    当我编译代码时 错误指向以下类 该错误在两行上突出显示 如下所示 tm validFrom tm validUntil struct t SslCertData final struct t Contact TCHAR Organizati
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对
  • 什么时候使用静态库需要头文件?

    如果我在 Linux 中用 C 创建一个静态库并生成 a 文件 我 或其他人 如何使用该库 例如 我的库定义了一个类 我认为仅仅提供 a 文件是不够的 还需要提供头文件 我如何知道 a 文件必须提供哪些头文件 例如 我是否需要提供我的库代码

随机推荐