需要帮助修复SQL连接错误C#.net sql server

时间:2014-08-27 09:24:38

标签: c# sql sql-server

使用vs2010 C#.net / sql server从app.config文件检索连接字符串时出错。我的代码在下面可以有一些人帮助我。可以请某人帮我解决这个问题。我正在客户端服务器env从服务器访问数据库。

private void btnSendEmailtoDB_Click(object sender, EventArgs e)
    {
        string connectionStrings= GetDatabaseConnection().ToString();
        //if (GetDatabaseConnection() != null)
        //{
            foreach (DataRow dr in dt.Rows)
            {
                InsertEmailData(connectionStrings, dr["Subject"].ToString(), dr["Content-Description"].ToString(), dr["From"].ToString(), dr["To"].ToString(), Convert.ToDateTime(dr["DateSent"].ToString()), loginTextBox.Text);

            }
        //}
    }

private string GetDatabaseConnection()
    {
        var connectionString = ConfigurationManager.ConnectionStrings["emailDownloadsManagement"].ConnectionString;
        return connectionString;
    }

private void InsertEmailData(string connectionString, string emailSubject, string emailBodyDescription, string emailsFrom, string emailsTo, DateTime emailsDate, string emailsUser)
{
    // define INSERT query with parameters
string query = "INSERT INTO dbo.tblEmailDownload (emailMessageSubject, emailMessageBodyDescription, emailFrom, emailTo, emailDate, emailUser) " +
                       "VALUES (@emailMessageSubject, @emailMessageBodyDescription, @emailFrom, @emailTo, @emailDate, @emailUser) ";

        // create connection and command
        using (SqlConnection cn = new SqlConnection(connectionString))
        using (SqlCommand cmd = new SqlCommand(query, cn))
        {
            // define parameters and their values
            cmd.Parameters.Add("@emailMessageSubject", SqlDbType.VarChar, 500).Value = emailSubject;
            cmd.Parameters.Add("@emailMessageBodyDescription", SqlDbType.VarChar, 5000).Value = emailBodyDescription;
            cmd.Parameters.Add("@emailFrom", SqlDbType.VarChar, 50).Value = emailsFrom;
            cmd.Parameters.Add("@emailTo", SqlDbType.VarChar, 50).Value = emailsTo;
            cmd.Parameters.Add("@emailsDate", SqlDbType.DateTime).Value = emailsDate;
            cmd.Parameters.Add("@emailUser", SqlDbType.VarChar, 50).Value = emailsUser;

            // open connection, execute INSERT, close connection
            //if (cmd.Connection.State == ConnectionState.Open)
            //{
            //    cmd.Connection.Close();
            //}
            cn.Open();  // the error is here saying ServerVersion   'cn.ServerVersion' threw an exception of type 'System.InvalidOperationException'    string {System.InvalidOperationException} and saying connection is closed
            cmd.ExecuteNonQuery();
            cn.Close();
        }
    }

我的app.config文件详细信息如下所示,一切正确,但有错误

<configuration>
<connectionStrings>
<add name="emailDownloadsManagement" connectionString="Data Source = SERVER;Initial Catalog=emails;User Id=administrator;Password=password;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

这里是更详细的错误说明。 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

发现还有一件事可以解决一些问题 大家好,虽然调试发现这种连接字符串的格式看起来不太好,因为\有人请帮我纠正&#34;数据源=服务器;初始目录=电子邮件;用户ID = abcxyz \ administrator;密码=密码& #34;是这个带有\的用户标识导致不打开连接。请帮助...我尝试从Windows身份验证更改为SQL身份验证,但错误是相同的,现在也存在。请帮忙......

3 个答案:

答案 0 :(得分:0)

您收到的错误表明它无法使用您提供的连接字符串连接到数据库服务器。由于您使用集成安全性,它将尝试以iis应用程序池下设置的用户身份进行连接,您无法在连接字符串中提供Windows用户名和密码。如果您不使用集成身份验证,那么您可以提供用户名和密码,但这需要是SQL服务器用户而不是Windows用户。

答案 1 :(得分:0)

首先你检查你能从当前的loginid和密码登录数据库。并检查数据库名称。

然后在webconfig中检查connectionstring(正确的名称)。

ConfigurationManager.ConnectionStrings [ “emailDownloadsManagement”]。ConnectionString.ToString()

然后尝试上面的代码。

答案 2 :(得分:-1)

我认为您需要在表中插入完全相同数量的参数值......... @ emailMessageID可能是罪魁祸首,因为insert语句看起来不正确。还可以尝试将整个插入语句放在一行而不使用“+”连接。连接看起来还不错,但我不能说真的没有在你的最后。

希望这会有所帮助

基督教