gpt4 book ai didi

C# system.io.filenotfoundexception 异常

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:00 25 4
gpt4 key购买 nike

我正在为我的工作开发一个应用程序来跟踪整个学年的行为管理。为此,我显然需要一个数据库。我构建了程序,以便在打开时检查数据库是否存在,如果不存在,则创建一个并输入模式。这在我的开发计算机上完美运行,但是当我将它切换到使用 Windows XP 的计算机时,它给出了一个错误,提示 system.io.filenotfoundexception。我不明白为什么它不会创建数据库。我正在使用 Visual C# 2010 Express。而数据库是用sql server ce做的。

        if (!File.Exists("chart.sdf"))//Checks if file is already in existance when app is opened
{
dbCreated = createDb();//If there is no database, creates one
}


public bool createDb()//Creates the database if needed
{
bool success = true;
//Holds sql schema for the table
string[] tableCreateArr ={"create table childNameId"
+ "(childId INT IDENTITY PRIMARY KEY, "
+ "childFName nchar(40), "
+ "childLName nchar(40));",
"create table leaderNameId"
+ "(leaderId INT IDENTITY PRIMARY KEY, "
+ "leaderFName nchar(40), "
+ "leaderLName nchar(40));",
"create table TagPulledId"
+ "(tagId INT IDENTITY PRIMARY KEY, "
+ "childId INT, "
+ "leaderId INT, "
+ "day TINYINT, "
+ "month TINYINT, "
+ "year INT);",
"CREATE TABLE tagInfo"
+ "(tagId INT, "
+ "color nchar(10), "
+ "description ntext)"};

SqlCeEngine dbCreate = new SqlCeEngine(connectString()); // creates the database obj

dbCreate.CreateDatabase(); // creates the database file
SqlCeConnection tempConnect = new SqlCeConnection(connectString());//Connects to the new database
SqlCeCommand objCmd = new SqlCeCommand();//Creates an sql command obj
tempConnect.Open(); // opens the connection
objCmd.Connection = tempConnect; //Connects the command obj

foreach (string strCmd in tableCreateArr)//Iterates throught he sql schema to create the tables
{
try
{
objCmd.CommandText = strCmd; //sets the CommandText to the next schema entry in the array
objCmd.ExecuteNonQuery(); //Executes the create query
}
catch (SqlCeException sqlError)
{
MessageBox.Show(sqlError.Message, "SQL Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
success = false;
}
}
tempConnect.Close();
return success;
}

我不明白为什么该应用程序没有创建数据库,它似乎在某些计算机上可以运行,而在其他计算机上却不能运行。任何帮助都会很棒!谢谢。

最佳答案

if (!File.Exists("chart.sdf"))

您似乎想在与您的程序相同的目录中创建数据库。是的,这可以在您的开发机器上运行,但不能在普通机器上运行。典型的安装目录 (c:\program files\etc) 不允许对文件进行写访问。

您将需要使用 Environment.GetFolderPath() 来获取您可以写入的 ApplicationData 目录。

让安装程序创建 appdata 目录并在其中复制初始 .sdf 文件通常更容易,也更不容易出错。尽管 Express 版本不支持安装项目。确实有一点,绕过 Express 版限制的黑客代码正在击败产品许可证的价格。你离这里很近了。

关于C# system.io.filenotfoundexception 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755099/

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