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# + 访问错误:不是有效的文件名的主要内容,如果未能解决你的问题,请参考以下文章