2

我对 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");
4

6 回答 6

7

您使用的是 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 所需的库,请参阅我的其他答案

从这里下载库Microsoft SQL Server Compact 4.0

  1. 添加对System.Data.SqlServerCe.dll项目的引用
  2. 添加这个 using 指令using System.Data.SqlServerCe
  3. 使用SqlCeConnection代替SqlConnection
于 2012-10-15T09:40:43.247 回答
4

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

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

或者

new SqlConnection(@"C:\Users\...")
于 2012-10-15T09:31:50.970 回答
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");
于 2012-10-15T09:33:17.577 回答
2
SqlConnection con = new SqlConnection(@"C:\Users\Documents\Visual Studio
    2012\Projects\DataBaseTest\MyDatabase#1.sdf");
于 2012-10-15T09:30:11.803 回答
2

您需要使用 @ 符号来表明字符串是文字,并忽略特殊字符。

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

于 2012-10-15T09:33:23.333 回答
0

对于 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();
于 2014-07-09T16:31:50.830 回答