【问题标题】:Can i make sql Database part of c# Project我可以将 sql 数据库作为 c# 项目的一部分吗
【发布时间】:2016-05-04 05:39:23
【问题描述】:

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

干杯 瑞恩

【问题讨论】:

    标签: c# database visual-studio


    【解决方案1】:

    有一种方法可以在每台计算机中获取项目的位置:(在 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”,并确保将您的数据库移动到调试文件夹中。

    【讨论】:

    • 是的,我得到了完美的工作,现在我需要的是在我发布时实际包含数据库,它在 microsoft Visual Studio 中工作得非常好,但是当我发布并运行应用程序时,数据库不在那里,我已经将数据库移动到 exe 所在的位置并且它可以工作但无论如何我可以得到它所以它会自动执行此操作吗?干杯
    • 我想你可以在这里找到你正在寻找的东西 - stackoverflow.com/questions/28321508/…
    • 非常感谢,工作完美
    【解决方案2】:

    在将您的数据库与您的项目一起公开后,您将通过使用从部署中获得安装路径:

    string sourcePath =System.Reflection.Assembly.GetExecutingAssembly().Location
    sourcePath =sourcePath +"\data.mdf";
    

    【讨论】:

      【解决方案3】:

      如果它是一个简单的应用程序,您可以尝试使用像SQLite 这样的嵌入式数据库。我在我的应用程序中使用它,它工作正常。

      【讨论】:

      • 你能解释一下我会怎么做吗?
      【解决方案4】:

      如果你想使用 SQLite,我们一步一步来。

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

      创建表格

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

      【讨论】:

      • 非常感谢,这对我的项目来说是完美的。 :)
      猜你喜欢
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2011-12-21
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多