C# + 访问错误:不是有效的文件名

Posted

技术标签:

【中文标题】C# + 访问错误:不是有效的文件名【英文标题】:C# + Access Error: Not a valid File name 【发布时间】:2017-06-19 15:52:53 【问题描述】:

我的文件目录似乎有问题。我从 Stack Overflow 的 1 篇文章中了解到,我的文件目录中有一个隐藏的 [enter] 或 \n。我不明白。这是我的代码

我的连接字符串:

    con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪C:\CRDB\crdb.accdb;
Persist Security Info=False;";

这就是我正在做的事情:

public void loadTable()
        
            try
            
                con.Open();
                OleDbCommand com = new OleDbCommand();
                com.Connection = con;
                string query = "SELECT * FROM ChequeMasterList";
                com.CommandText = query;

                OleDbDataAdapter da = new OleDbDataAdapter(com);
                DataTable dt = new DataTable();
                da.Fill(dt);
                dataGridView1.DataSource = dt;

                con.Close();
            
            catch(Exception ex)
            
                MessageBox.Show("Error: " + ex.Message);
            
        

如您所见,它非常简单。我只想将我的数据库加载到我的 Datagridview 上,但我不断收到此错误:

enter image description here

我现在做了很多 C# 系统,这是我第一次遇到这个问题。你有什么想法吗?

【问题讨论】:

听起来您的 Access DB 不在您认为的位置,或者它被锁定使其无法访问。确保您正在构建 32 位,并且不要在 Load 事件中运行代码 - 使用构造函数。 @LarsTech 你是什么意思它被锁定了?嗯……怎么会这样?还有你是什么意思构建到 32 位?对不起,所有这些术语对我来说似乎都是新的。我是一名休闲程序员,只是将其作为一种爱好。 @LarsTech 我尝试使用文档中的默认 Access 路径,但仍然出现相同的错误。尝试重命名文件夹和文件,仍然是同样的错误。我还尝试更改数据库的位置,但仍然遇到相同的错误。请帮忙。 Access 通常是 32 位数据库,所以你必须匹配它:属性 - 构建 - 平台目标:x86。让 Access 程序以独占方式打开您的 Access 数据库是锁定数据库的一种方式。我只是提出建议。 C:\CRDB\crdb.accdb 必须存在并且您必须拥有它的权限。这不是当今环境中的正常文件路径。 点击开始按钮,输入C:\CRDB\crdb.accdb,看看能不能这样打开。另一种选择可能是重命名数据库并更改连接字符串以匹配新名称,看看是否有效。如果是这样,您应该能够将其重命名并修复您的连接字符串,然后再试一次。 【参考方案1】:

文件名中的转义码 \c 是非法的。使用 \\c 和 \\C。您引用的字符串不是您认为的那样。

【讨论】:

对不起,我不明白。什么转义码?我的路径应该是什么样的? 我做了一些研究,我仍然不确定我是否做对了。我已将路径更改为C:\CRDB\\crdb,但仍然出现相同的错误。如果我错了,请纠正我。谢谢。 我真的不确定这个答案是否是实际问题(c# 的新手以及文字字符串自己的工作方式),但您是否使用以下连接字符串尝试过:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪C:\\CRDB\\crdb.accdb; Persist Security Info=False;" 也可能前面不带@也是一样的吗? @DanArenas 见 ideone.com/j4Ps46 @CharlesMay 我试过了。我得到了同样的错误。我认为我的项目有点问题。我决定创建一个新项目,一切顺利。我不知道发生了什么,但是尽管有相同的代码,但新的没有错误。

以上是关于C# + 访问错误:不是有效的文件名的主要内容,如果未能解决你的问题,请参考以下文章

通过 C# 确定字符串是不是是有效的文件路径

vs2010 C#添加DLL文件引用失败

vs2010 C#添加DLL文件引用失败

C#中FTP编程 远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)

错误:不是有效的文件名(OleDbException)

Python ODBC 连接:不是有效的文件名错误