C#Winform的数据库连接疑问?!

qq465644390 2011-11-21 08:59:20
这是我之前写的连接数据库的类:(我的数据库放在项目目录【Student】的同级目录【DataRe】下)
public class database
{
public SqlConnection mySqlConnection = new SqlConnection();
public string str = "server";
//完成数据库连接的构造函数
public database()
{
mySqlConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\程序\The Class Management System\DataRe\xsgl_Data.MDF;Integrated Security=True";
mySqlConnection.Open();
}

}
但是更换文件夹路径后因为绝对路径不对造成无法连接数据库。后来就想通过函数来获取当前路径的名称,从来获得绝对路径。代码如下:
public class database
{
public SqlConnection mySqlConnection = new SqlConnection();
public string str = "server";
//完成数据库连接的构造函数
public database()
{
string path = System.Windows.Forms.Application.StartupPath + @"../../../";
System.IO.Directory.SetCurrentDirectory(path);
string strFilePath = System.IO.Directory.GetCurrentDirectory() + @"\DataRe\xsgl_Data.mdf";
string dr = string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True", strFilePath);
mySqlConnection.ConnectionString = '"' + dr + '"';
mySqlConnection.Open();
}

}
经测试,mySqlConnection.ConnectionString接收的确实是与之前相同的字符串"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\程序\The Class Management System\DataRe\xsgl_Data.MDF;Integrated Security=True"
但是编译的时候却提示:未处理ArgumentException不支持关键字: “"data source”。
谁知道怎么解决啊?!到底哪里错了呢?!
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq465644390 2011-11-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dalmeeme 的回复:]

这句不对:mySqlConnection.ConnectionString = '"' + dr + '"';
dr已经是字符串了,不需要前后加上一对引号,直接
mySqlConnection.ConnectionString = dr;
就行了。
[/Quote]
如果直接dr的话。相当于是mySqlConnection.ConnectionString = Data Source=.\SQLEXPRESS;AttachDbFilename=E:\程序\The Class Management System\DataRe\xsgl_Data.MDF;Integrated Security=True;并不是mySqlConnection.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=E:\程序\The Class Management System\DataRe\xsgl_Data.MDF;Integrated Security=True";注意dr的值是Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True这里并不含双引号。而mySqlConnection.ConnectionString = 的值是字符串,有双引号的。如:mySqlConnection.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\程序\The Class Management System\DataRe\xsgl_Data.MDF;Integrated Security=True";我在前后加上一对引号就是为了使dr的值传过来的时候有双引号,从而跟我先前写的一样。可是不知道错在哪?
sdl2005lyx 2011-11-21
  • 打赏
  • 举报
回复
连接字符串出错,改成:

"Data Source=(local); Integrated Security=true;Initial Catalog=数据库名;";
dalmeeme 2011-11-21
  • 打赏
  • 举报
回复
所以会提示未处理ArgumentException不支持关键字: “"data source”。

注意中文双引号里有个英文的引号。
dalmeeme 2011-11-21
  • 打赏
  • 举报
回复
这句不对:mySqlConnection.ConnectionString = '"' + dr + '"';
dr已经是字符串了,不需要前后加上一对引号,直接
mySqlConnection.ConnectionString = dr;
就行了。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧