gpt4 book ai didi

c# - 为什么我的 winform 在打开 Access 数据库 (.accdb) 时会调整大小,我该如何解决?

转载 作者:太空宇宙 更新时间:2023-11-03 12:44:35 25 4
gpt4 key购买 nike

我有一个正在处理的大型项目,在该项目中打开 Access 数据库会导致整个表单缩小,很多天后我将问题缩小到在我的项目中打开 Access 数据库 (.accdb)。 (也可以与其他数据库一起使用,但我只用 Access 确认过。

为了确认打开数据库是问题所在,我创建了一个只有一个按钮的小项目,一个用于打开数据库的打开文件对话框。

这里是这个项目中的所有代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;

using ADOX; //Requires Reference 'Microsoft ADO Ext. 6.0 for DDL and Security' found in the reference manager under COM. Rightclick and click add reference...
using ADODB; //Requires Reference 'ADODB' found in the reference manager under assemblies. Rightclick and click add reference...

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
String databaseLocation = "";
String connectionString = "";
String q = "";

OleDbConnection conn = null;

bool DatabaseOpen = false;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void bStartLoad_Click(object sender, EventArgs e)
{
openDB.Title = "Select Database To Load";
openDB.InitialDirectory = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Application.ExecutablePath), @"Databases");
openDB.FileName = "";
openDB.Filter = "Access Database|*.accdb";



try
{

if (openDB.ShowDialog() == DialogResult.Cancel)
{

MessageBox.Show("Operation Cancelled");

}
else {
databaseLocation = openDB.FileName;
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + databaseLocation + ";Persist Security Info=False";
conn = new OleDbConnection(connectionString);
conn.Open();
DatabaseOpen = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


}
}

为了节省时间我把测试项目上传到My DropBox Here

我不知道为什么会发生这种调整,我的老师也被难住了,所以也许其他人可以解决。

注意:要遇到此问题,您需要打开 .accdb 数据库文件,因为只有打开数据库并建立连接后才会出现此问题。 conn.open();您可能还需要来自 https://www.microsoft.com/en-us/download/details.aspx?id=23734 的驱动程序如果您在尝试打开数据库时遇到错误。

最佳答案

OleDb / OleDbConnection resizing form (bug?)上找到了一些信息这帮助我解决了问题。

这是微软的问题,但我的问题是我已经安装了2007 Office System 驱动程序:来自 https://www.microsoft.com/en-us/download/details.aspx?id=23734 的数据连接组件因为它需要打开连接以 Access 64 位计算机上的数据库,但仅仅这样做会导致调整大小问题并且不会提供任何错误或问题反馈,而且由于我没有直接更改表单中任何地方的大小,它变得非常困惑并且难以调试。

但是我还发现还安装了 Microsoft Access Database Engine 2010 Redistributable (32bit) 在 https://www.microsoft.com/en-au/download/details.aspx?id=13255 找到修复了打开数据库时发生的调整大小问题。

希望这对将来也尝试将数据加载和保存到 Access 数据库的其他人有所帮助。

关于c# - 为什么我的 winform 在打开 Access 数据库 (.accdb) 时会调整大小,我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com