0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.IO;
using System.Configuration;



namespace Iknowyourbrain
{

    public partial class WebForm1 : System.Web.UI.Page
    {
        public static void ClearControls(Control Parent)
        {

            if (Parent is TextBox)
            { (Parent as TextBox).Text = string.Empty; }
            else
            {
                foreach (Control c in Parent.Controls)
                    ClearControls(c);
            }
        }
        private void ExecuteInsert(string username, string password, string age, string gender, string emailaddress)
        {
            SqlConnection conn = new SqlConnection(GetConnectionString());
            string sql = "INSERT INTO tblRegistration (UserName, Password, Age, Gender, Email Address) VALUES "
                   + " (@UserName,@Password,@Age,@Gender,@Email Address)";

            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlParameter[] param = new SqlParameter[6];


                param[0] = new SqlParameter("@UserName", SqlDbType.VarChar, 50);
                param[1] = new SqlParameter("@Password", SqlDbType.VarChar, 50);
                param[2] = new SqlParameter("@Age", SqlDbType.Char, 10);
                param[3] = new SqlParameter("@Gender", SqlDbType.Int, 100);
                param[4] = new SqlParameter("@Email Address", SqlDbType.VarChar, 50);

                param[0].Value = username;
                param[1].Value = password;
                param[2].Value = age;
                param[3].Value = gender;
                param[4].Value = emailaddress;


                for (int i = 0; i < param.Length; i++)
                {
                    cmd.Parameters.Add(param[i]);
                }

                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
            }
            catch (System.Data.SqlClient.SqlException ex)
            {
                string msg = "Insert Error:";
                msg += ex.Message;
                throw new Exception(msg);
            }
            finally
            {
                conn.Close();
            }



        }
        public string GetConnectionString()
        {
            //sets the connection string from your web config file "ConnString" is the name of your Connection String
            return System.Configuration.ConfigurationManager.ConnectionStrings["MyConsString"].ConnectionString;
        }

        protected void Page_Load(object sender, EventArgs e)
        {


        }

        protected void Button1_Click(object sender, EventArgs e)
        {

                //call the method to execute insert to the database
                ExecuteInsert(
                              TxtUserName.Text,
                              TxtPassword.Text,
                              DropDownListGender.SelectedItem.Text,
                              TxtAge.Text, TxtEmailAddress.Text);
                Response.Write("Record was successfully added!");
                ClearControls(Page);
            }




    }
}

これまでのところ、私のウェブサイトのコードです。私のweb.configファイルには、

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>

  <connectionStrings>
    <add name="MyConsString" connectionString="Data Source=WPHVD185022-9O0;
                             Initial Catalog=MyDatabase;
                             Integrated Security=SSPI;"
                             providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

アカウントを登録するためのテストを作成しようとすると、次のエラーが発生しました。

例外はユーザー コードによって処理されませんでした

挿入エラー: SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。

(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)

4

1 に答える 1

2

何らかの理由で、アプリケーションは接続文字列で指定されたデータベースに接続できません。

これは、サーバー名またはカタログ名、資格情報(統合セキュリティの使用は本番環境ではほとんど機能しないため、その場合は修正する必要があります)、不十分なアクセス許可、アカウントの無効化などの可能性があります。一般的に、またはあなたの場所からのデータベースは許可されていません。

結論として、接続文字列とSQLサーバーの構成を確認する必要があります。

于 2013-03-12T16:24:28.583 に答える