-1

我在下面的代码中找不到错误。当我使用 SQLDataSource 连接我的数据库时,没有错误。但是,如果我尝试编写自定义代码来使用 SQLDataSource 使用的相同连接字符串连接数据库,我遇到了这个错误:

(提供者:命名管道提供者,错误: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();
4

6 回答 6

1

这不应该读:

sqlcon.ConnectionString = "Data Source=ERHANEMREEROGLU\\SQLEXPRESS;Initial Catalog=KET;Integrated Security=True";     
于 2012-07-06T09:25:47.227 回答
0

您正在执行ExecuteNonQuery();插入/更新/删除语句。您可以使用ExecuteReader填充 DataReader或使用SQLDataAdapter填充数据集/数据表。

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);
        }
        }
于 2012-07-06T09:25:18.760 回答
0

有问题在声明中sqlcmd.ExecuteNonQuery();

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Login", sqlcmd))            
DataTable t = new DataTable();
adapter.Fill(t);

实际上你正在执行一个查询,你需要SqlDataReader或者SqlDataAdapter在这里。

于 2012-07-06T09:25:48.197 回答
0

如果您在 SQL 数据库上使用 Windows 身份验证,您可能需要将集成安全更改为 SSPI?虽然我不太确定。- 编辑阅读有关此的一些信息,SSPI 等效于 True,因此请参阅下面的建议。

sqlcon.ConnectionString = "Data Source=ERHANEMREEROGLU/SQLEXPRESS;Initial Catalog=KET;Integrated Security=SSPI";

但正如 John Blade 所说,您可能还需要在配置管理器中检查它是否接受远程连接。

还要确保您已将 Windows 用户添加到数据库中。您可以使用 SQL Mangement Studio 工具来执行此操作。

于 2012-07-06T09:34:18.890 回答
0

你应该改变你的线路:

sqlcmd.ExecuteNonQuery();

至:

  SqlDataReader dr = sqlcmd.ExecuteReader();
于 2012-07-06T09:28:50.007 回答
0

尝试检查您的 SQL server 是否允许远程连接,您可以在 sql server 配置管理器中进行设置

然后启用远程 TCP 连接

于 2012-07-06T09:29:48.777 回答