我在下面的代码中找不到错误。当我使用SQLDataSource连接我的数据库时,没有错误。但是,如果我尝试使用SQLDataSource使用的相同连接字符串编写自定义代码来连接数据库,我遇到了这个错误:
(provider:Named Pipes Provider,错误:40 - 无法打开与SQL Server的连接)
我认为我的代码中没有错误,但是在SQL 2008 Express的配置设置中。
提前致谢...
SqlConnection sqlcon = new SqlConnection();
sqlcon.ConnectionString = "Data Source=ERHANEMREEROGLU/SQLEXPRESS;Initial Catalog=KET;Integrated Security=True";
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Connection=sqlcon;
sqlcmd.CommandText = "SELECT * FROM Login";
sqlcmd.CommandType = CommandType.Text;
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
答案 0 :(得分:1)
不应该这样读:
sqlcon.ConnectionString = "Data Source=ERHANEMREEROGLU\\SQLEXPRESS;Initial Catalog=KET;Integrated Security=True";
答案 1 :(得分:0)
您正在执行ExecuteNonQuery();
,用于插入/更新/删除语句。您可以使用ExecuteReader使用SQLDataAdapter填充DataReader,也可以使用{{3}}填充数据集/数据表。
SqlDataReader reader = sqlcmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(String.Format("{0}", reader[0]));
}
您可以尝试:
using (SqlConnection sqlcon = new SqlConnection(
"Data Source=ERHANEMREEROGLU\\SQLEXPRESS;Initial Catalog=KET;Integrated Security=True"))
{
sqlcon.Open();
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM Login", sqlcon ))
{
DataTable t = new DataTable();
a.Fill(t);
}
}
答案 2 :(得分:0)
sqlcmd.ExecuteNonQuery();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Login", sqlcmd))
DataTable t = new DataTable();
adapter.Fill(t);
Actualy您正在执行查询,此处需要SqlDataReader
或SqlDataAdapter
。
答案 3 :(得分:0)
你应该改变你的行:
sqlcmd.ExecuteNonQuery();
为:
SqlDataReader dr = sqlcmd.ExecuteReader();
答案 4 :(得分:0)
尝试检查您的SQL服务器是否允许远程连接,您可以在sql server配置管理器中设置
然后启用远程TCP连接
答案 5 :(得分:0)
如果您在SQL数据库上使用Windows身份验证,则可能需要将集成安全性更改为SSPI?虽然我不太确定。 - 编辑阅读有关此内容的一些信息,SSPI等同于True,因此请参阅下面的建议。
sqlcon.ConnectionString = "Data Source=ERHANEMREEROGLU/SQLEXPRESS;Initial Catalog=KET;Integrated Security=SSPI";
但正如John Blade所说,您可能还需要在Configuration Manager中检查它是否接受远程连接。
还要确保已将Windows用户添加到数据库中。您可以使用SQL Mangement Studio工具执行此操作。