无法使用sqldatasource使用的相同连接字符串通过自定义代码连接到数据库

时间:2012-07-06 09:23:07

标签: c# asp.net sql-server-2008

我在下面的代码中找不到错误。当我使用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();

6 个答案:

答案 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您正在执行查询,此处需要SqlDataReaderSqlDataAdapter

答案 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工具执行此操作。