解决 当dataAdaptor填充dataTable时出错

PDS8475

活跃的成员
已加入
2019年6月25日
留言内容
41
编程经验
Beginner
你好
我有一个带有DataGridView(Records_dataGridView)的C#表单,我正在尝试从访问表中填写该表单"Donations"表单加载时。
我有一个dataAdaptor(DA)
填充一个dataTable(DT)
这是Records_dataGridView的数据源
可以在下面的代码中看到
C#:
 private void Reports_Form_Load(object sender, EventArgs e)
        {
         
            string ConString = System.IO.File.ReadAllText("FixIT.con");
            ConString = ConString.Replace(System.Environment.NewLine, string.Empty);

            System.Data.OleDb.OleDbConnection connn = new System.Data.OleDb.OleDbConnection();
            string connsString = "Provider = Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + ConString;
            try
            {
                using (OleDbConnection connection = new OleDbConnection(connsString))
                {
                    using (OleDbCommand command = new OleDbCommand("Select * FROM 捐献", connection))
                    {
                        command.CommandType = CommandType.Text;
                        using (OleDbDataAdapter DA = new OleDbDataAdapter(command))
                        {
                            using (DataTable DT = new DataTable())
                            {
                                DA.Fill(DT);
                                Records_dataGridView.DataSource = DT;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
问题是当我尝试加载表单时出现以下异常
System.Data.OleDb.OleDbException(0x80040E4D):无错误消息可用,结果代码:DB_SEC_E_AUTH_FAILED(0x80040E4D)。
在System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString构造,OleDbConnection连接)
在System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningObject)
在System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection,DbConnectionOptions userOptions)
在System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,DbConnectionPoolGroup poolGroup,DbConnectionOptions userOptions)
在System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource`1重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal& connection)
在System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal处(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletionSource`1重试,DbConnectionOptions userOptions)
在System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletionSource`1重试,DbConnectionOptions userOptions)
在System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection externalConnection,DbConnectionFactory connectionFactory)
在System.Data.OleDb.OleDbConnection.Open()
在System.Data.Common.DbDataAdapter.FillInternal处(DataSet数据集,DataTable []数据表,Int32 startRecord,Int32 maxRecords,字符串srcTable,IDbCommand命令,CommandBehavior行为)
在System.Data.Common.DbDataAdapter.Fill处(DataTable [] dataTables,Int32 startRecord,Int32 maxRecords,IDbCommand命令,CommandBehavior行为)
在System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
在FixIT.Reports_Form.Reports_Form_Load(Object sender,EventArgs e)中的C:\ Users \ Paul \ source \ repos \ FixIT \ FixIT \ Reports_Form.cs:line 60
当dataAdaptor尝试填充dataTable时出现错误,但我不知道为什么。
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
错误代码"DB_SEC_E_AUTH_FAILED"建议与安全相关的错误-特别是与身份验证相关的错误。您的应用程序是否有机会进行某种模拟,还是正在尝试访问您没有访问权限的Access数据库?
 

PDS8475

活跃的成员
已加入
2019年6月25日
留言内容
41
编程经验
Beginner
The error code "DB_SEC_E_AUTH_FAILED"建议与安全相关的错误-特别是与身份验证相关的错误。您的应用程序是否有机会进行某种模拟,还是正在尝试访问您没有访问权限的Access数据库?

嗨,连接字符串用于多种形式,并适用于其余形式。它仅在此表单上失败。因此,如果它与连接有关,那么必须是在此表单上建立连接的方式。
 

PDS8475

活跃的成员
已加入
2019年6月25日
留言内容
41
编程经验
Beginner
嗨,连接字符串用于多种形式,并适用于其余形式。它仅在此表单上失败。因此,如果它与连接有关,那么必须是在此表单上建立连接的方式。
在键入该消息后,由于某种原因,它已失去与数据库的连接,因此刚刚尝试过。我将数据库的路径存储在一个文本文件中,我使用一个打开的文件对话框来保存该文本文件的路径,由于某种原因,在我上次尝试使用其他格式(数小时前)后,该文件已损坏。这让我看起来很傻,但是感谢您的帮助,如果没有您的帮助,我将无法解决。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,921
地点
英国
编程经验
10+
将连接字符串存储在公共只读字符串中有什么问题吗?
 

PDS8475

活跃的成员
已加入
2019年6月25日
留言内容
41
编程经验
Beginner
将连接字符串存储在公共只读字符串中有什么问题吗?
我不确定该怎么做。与数据库的连接必须是可选的,并且需要存储。但是,如果路径在数据库中而不是文本文件中,则将更加安全。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,921
地点
英国
编程经验
10+
大声笑如果连接字符串的路径在数据库内部,则您将永远无法连接到该数据库以读取它。我假设您是说它是否存储在您的应用程序中?

如果您说出自己在做什么,我相信有人会帮助您做您想做的事情。

哦,天哪,请看一下您的连接字符串。学习正确构建它- ConnectionStrings.com-忘记该连接字符串?在这里获取!
 
最佳 底部