2015-08-13 19 views
0

我正在使用Visual Studio 2013.创建Web窗体项目。增加了一些东西和所需的数据库 另外,使用添加项目添加数据库。 增加了一些东西到数据库。 使用Web配置中的连接字符串。 建立连接时,我收到了一些错误。使用app_data.mdf数据库操作

这里是我的连接字符串>

<connectionStrings> 
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-mywebsite-20150813211505;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-mywebsite-20150813211505.mdf" /> 
    </connectionStrings> 

C#代码>

SqlConnection con = new SqlConnection(@"Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-mywebsite-20150813211505;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-mywebsite-20150813211505.mdf"); 
      SqlCommand cmd = new SqlCommand("select * from Users;"); 
      con.Open(); 
      DataSet ds = new DataSet(cmd, con); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      da.Fill(ds); 
      con.Close(); 

这里是错误

错误1

为 的最佳重载的方法匹配“System.D ata.DataSet.DataSet(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'有一些无效的参数c:\ users *** \ documents \ visual studio 2013 \ Project \ Default.aspx。 CS 30 26 mywebsite

错误2

参数1:不能从 'System.Data.SqlClient.SqlCommand' 转换到 'System.Runtime.Serialization.SerializationInfo' C:\用户** * \ documents \ visual studio 2013 \ Projects \ Default.aspx.cs 30 38管理网站

错误3

参数2:无法从 'System.Data.SqlClient.SqlConnection' 转换为 'System.Runtime.Serialization.StreamingContext' C:\用户*** \文档\ visual studio 2013 \ Projects \ Default.aspx.cs 30 43 mywebsite

当单击错误时,它将重点放在DataSet上。

帮助??一些更好的想法连接到我的数据库?

预先感谢您!

回答

1

你在初始化你的DataSet和你的SqlDataAdapter做了一些错误的,正确的方法是

using(SqlConnection con = new SqlConnection(....)) 
{ 
    SqlCommand cmd = new SqlCommand("select * from Users;"); 
    cmd.Connection = con; 
    con.Open(); 
    DataSet ds = new DataSet(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(ds); 
} 

这是SqlDataAdapter实例需要SqlCommand作为参数的构造函数之一,你可以很容易地发现on MSDN page。然后连接绑定的了SqlCommand.Connection财产,你应该附上SqlConnection创建一个using statement以确保它是封闭的,并设置在用块

您也可以从代码中删除两行结束通过直接连接到SqlCommand的构造函数(再次MSDN pages是信息的宝藏),并删除连接打开,因为如果适配器发现连接关闭,它会自动打开和关闭它

关于不同的主题,您已将连接字符串正确存储在应用程序的配置文件中。这使您可以轻松地更改它(如果需要的话)但您已经使用了硬编码的连接字符串。这应该改成这样的事情

string connString2 = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
+0

**类型“System.Data.SqlClient.SqlException”的异常出现在System.Data.dll中,但在用户代码中没有处理 其他信息:无法连接作为数据库'aspnet-mywebsite-20150813211505'的文件'c:\ users \ *** \ documents \ visual studio 2013 \ Projects \ App_Data \ aspnet-mywebsite-20150813211505.mdf'。** 连接有什么问题字符串? – LoverBugs

+0

谢谢你的快速回答。我重写了代码。 'string connString2 = WebConfigurationManager.ConnectionStrings [“DefaultConnection”] .ConnectionString;'
''使用(SqlConnection con = new SqlConnection(connString2))'
'{
'SqlCommand cmd = new SqlCommand(“shortsql”);'
' cmd.Connection = CON;''
con.Open();''
数据集DS =新的DataSet();''
SqlDataAdapter的DA =新的SqlDataAdapter(CMD);''
da.Fill(DS);'' con.Close();
}' 它给出错误(请参阅下一条评论) – LoverBugs