我可以将sql数据库作为c#Project

时间:2016-05-03 16:57:52

标签: c# database visual-studio

我已经制作了一个示例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#

来说很简单

干杯 莱恩

4 个答案:

答案 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,请一步一步走。

  1. 下载适用于您的.NET Framework版本的动态库System.Data.SQLite.dll
  2. 将System.Data.SQLite.dll链接到您的项目
  3. 编写类似这样的代码
  4. 创建表

    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();
    }