我已经制作了一个示例c#应用程序(第一个项目已完成)它是一个非常简单的应用程序,它使用数据库来存储数据和编辑数据。
我遇到的问题是程序在我的计算机上运行得很好,但是如果我发布应用程序并将其放在另一台计算机上,则它不能使用数据库,因为它不是项目的一部分。
我使用了连接字符串
private SqlConnection con = new SqlConnection("Data Source = (LocalDB)\\MSSQLLocalDB; AttachDbFilename = \"C:\\Users\\Ryan\\Documents\\Visual Studio 2015\\Projects\\youtubeLoginTut\\youtubeLoginTut\\data.mdf\"; Integrated Security = True; Connect Timeout = 30");
这显然是我计算机上数据库的路径,并且在下一台计算机上不一样。无论如何,我可以将数据库包含在包中,以便从应用程序所在的位置引用它。
我已经尝试缩短路径,例如.. \ data.mdf,但无济于事,我无法在谷歌上找到任何东西,所以我的所有想法。
对于c#
来说很简单干杯 莱恩
答案 0 :(得分:0)
有一种方法可以在每台计算机上获取项目的位置:(在bin / debug /中)
string path = AppDomain.CurrentDomain.BaseDirectory //example : C:/Users/Ryan/Documents/Visual Studio 2015/Projects/Youtubetut/bin/debug
您只需将项目文件夹中数据库的位置添加到此路径即可。 path
将替换您的“C:\ Users \ Ryan \ Documents \ Visual Studio 2015 \ Projects \ youtubeLoginTut”,并确保将数据库移动到调试文件夹中。
答案 1 :(得分:0)
Afeter使用您的项目公开数据库,您可以通过以下方式获得部署安装路径:
string sourcePath =System.Reflection.Assembly.GetExecutingAssembly().Location
sourcePath =sourcePath +"\data.mdf";
答案 2 :(得分:0)
如果它是一个简单的应用程序,您可以尝试使用嵌入式数据库,如SQLite。我在我的应用程序中使用它并且工作正常。
答案 3 :(得分:0)
如果您想使用SQLite,请一步一步走。
创建表
SQLiteConnection con = new SQLiteConnection(String.Format(@"Data Source={0};Version=3;New=True;", "./db/mydatabase.sdb"));
con.Open();
SQLiteCommand cmd = con.CreateCommand();
cmd.CommandText = @"CREATE TABLE Books (BookId int, BookName varchar(255), PRIMARY KEY (BookId));";
cmd.ExecuteNonQuery();
con.Close();
阅读数据
using(SQLiteConnection con = new SQLiteConnection(String.Format(@"Data Source={0};Version=3;New=False;", "./db/mydatabase.sdb")) {
con.Open();
using (SQLiteCommand cmd = con.CreateCommand())
{
cmd.CommandText = @"SELECT BookName FROM Books WHERE BookId=1 LIMIT 1;";
using (SQLiteDataReader reader = cmd.ExecuteReader()) {
if (reader.HasRows && reader.Read()) {
oResult = Convert.ToString(reader["BookName"]);
}
reader.Close();
}
}
con.Close();
}