c# 数据库连接字符串

Posted

技术标签:

【中文标题】c# 数据库连接字符串【英文标题】:c# database connection string 【发布时间】: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");

【问题讨论】:

【参考方案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

    向您的项目添加对 System.Data.SqlServerCe.dll 的引用 使用指令添加这个using System.Data.SqlServerCe; 使用 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 开始。”知道这意味着什么吗? 请参考***.com/questions/9040266/…【参考方案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();

【讨论】:

以上是关于c# 数据库连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

C#连接oracle连接字符串怎么写啊?

C#连接MySql数据库的连接字符串是啥?

c# 数据库连接字符串

c# 连接字符串和连接app.config

c# mysql连接字符串问题

c#连接到mysql 的连接字符串怎么写