【问题标题】:c# database connection stringc# 数据库连接字符串
【发布时间】:2012-10-15 09:27:50
【问题描述】:

我是 C# 的新手,刚刚开始使用数据库。我在我的项目文件夹中创建了一个本地数据库,当我单击数据库上的属性时,我得到“连接字符串”:

Data Source="C:\Users\Documents\Visual Studio 2012\Projects\DataBaseTest\MyDatabase#1.sdf"

我的问题很简单,如何使用该行创建连接字符串?由于某种原因,写这会产生错误。

SqlConnection con = new SqlConnection(Data Source="C:\Users\Documents\Visual Studio
    2012\Projects\DataBaseTest\MyDatabase#1.sdf");

【问题讨论】:

    标签: c# database sql-server-ce


    【解决方案1】:

    您正在使用 SQL Server Compact 版本的数据库,为此您必须使用 SqlCeConnection 而不是 SqlConnection(用于 SQL Server)。

    您还必须将连接字符串中的反斜杠 \ 转义为 \\

    SqlCeConnection sqlConnection = new SqlCeConnection("Data Source=C:\\Users\\Documents\\Visual Studio
    2012\\Projects\\DataBaseTest\\MyDatabase#1.sdf");
    

    或使用逐字字符串:

    SqlCeConnection sqlConnection = new SqlCeConnection(@"Data Source=C:\Users\Documents\Visual Studio
    2012\Projects\DataBaseTest\MyDatabase#1.sdf");
    

    如果您没有在项目中使用 SqlCe 所需的库,请参阅我的其他答案 here

    从这里下载库Microsoft SQL Server Compact 4.0

    1. 向您的项目添加对 System.Data.SqlServerCe.dll 的引用
    2. 使用指令添加这个using System.Data.SqlServerCe;
    3. 使用 SqlCeConnection 代替 SqlConnection

    【讨论】:

    • 感谢您提供此信息,不知道 :) 但是当我尝试下载它时,我收到一条消息,说我已经有了更高版本(我猜它与 Visual Studio 一起提供)但我仍然不能参考它,因为它似乎不在 System.Data 中,有什么想法吗?
    • @Jacco 查看 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop(对于 x86)或 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop 对于 x64。
    • 它在那里,但我如何引用它? ://
    • @Jacco 在 Visual Studio 中右键单击您的项目 -> 选择 Add reference 然后浏览到程序集 (System.Data.SqlServerCe.dll)
    • @Jacco 也许您应该将其作为一个新问题发布,其中包含异常的完整堆栈跟踪以及您用于连接的新代码。
    【解决方案2】:

    您需要转义反斜杠(将反斜杠替换为双反斜杠)或在字符串前面放一个 @ 以告诉 C# 按字面意思理解,如下所示:

    new SqlConnection("C:\\Users\\...")
    

    new SqlConnection(@"C:\Users\...")
    

    【讨论】:

      【解决方案3】:

      对于路径,您不能像那样添加反斜杠。您需要转义反斜杠。有两种方法

      转义反斜杠

      方法#1 - 在路径字符串的开头使用@

      SqlConnection con = new SqlConnection(@"Data Source=C:\Users\Documents\Visual Studio
          2012\Projects\DataBaseTest\MyDatabase#1.sdf");
      

      方法#2 - 添加双反斜杠而不是一个反斜杠

      SqlConnection con = new SqlConnection("Data Source=C:\\Users\\Documents\\Visual Studio
          2012\\Projects\\DataBaseTest\\MyDatabase#1.sdf");
      

      【讨论】:

      • 感谢所有快速回答! :) 似乎没有任何错误,但是当我运行我的代码并尝试使用简单的表单和按钮在数据库中输入内容时,我在同一行收到此错误:“初始化字符串的格式不符合规范从索引 0 开始。”知道这意味着什么吗?
      【解决方案4】:
      SqlConnection con = new SqlConnection(@"C:\Users\Documents\Visual Studio
          2012\Projects\DataBaseTest\MyDatabase#1.sdf");
      

      【讨论】:

        【解决方案5】:

        你需要使用@符号来表明字符串是字面量,并且忽略特殊字符。

        此页面显示示例 http://www.dotnetperls.com/string-literal

        【讨论】:

          【解决方案6】:

          对于 Visual Studio 2012 中的本地数据库,需要在代码中导入 System.Data.SqlServerCe。我创建了一个控制台应用程序,它将连接到我从解决方案资源管理器选项卡添加的本地数据库,代码看起来像

          SqlCeConnection con = new SqlCeConnection(@"Data ource=C:\Users\MyComputer\Documents\Visual Studio 2012\Projects\ConsoleApplication4\ConsoleApplication4\Database1.sdf");
                      con.Open();
          
                  string sql = "SELECT * FROM Employee";//select query
                  string sql1 = "INSERT INTO Employee(Name, Age)VALUES('aaa', 12)";//insert query
          
                          SqlCeCommand cmd = new SqlCeCommand(sql, con);
                          SqlCeCommand cmd1 = new SqlCeCommand(sql1, con);
                          cmd1.ExecuteScalar(); // executing insert command
                          SqlCeDataReader reader = cmd.ExecuteReader();//to read data from table
                          while (reader.Read())
                          {
                              Console.WriteLine(String.Format("{0}, {1}", reader[0],reader[1]));
                          }
                         con.Close();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-10-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-30
            相关资源
            最近更新 更多