2017-03-26 17 views
1

私は自分のプロジェクトをデータベースに接続しようとしています。これはデータベースを扱う際にはかなり新しいものです。私はプログラムを実行すると、私はユーザーがログインに失敗したというサーバーエラーを受け取ります。私は記入フォームがアカウントを作成した後にデータベースのフィールドを入力するフォームに取り組んでいます。SqlConnectionによる支援

これは私のバックエンド・コードです:私は、データベース内のテーブルを持っている

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 

public partial class SignUp : System.Web.UI.Page 
{ 

    SqlConnection conn = new SqlConnection(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     conn.ConnectionString = @"Data Source=184.168.47.13;Initial Catalog=portfoliobrown;User ID=crossfire19;Password=***********"; 
    //error occurs here conn.Open(); 
    } 

    public void ExecuteConnection() 
    { 

     SqlCommand Command = new SqlCommand("Insert into SignUp" + "(FirstName, LastName, Password, Email)values(@FirsName, @LastName, #Password, @Email)",conn); 

     Command.Parameters.AddWithValue("@FirstName", FirstName.Text); 
     Command.Parameters.AddWithValue("@LastName", LastName.Text); 
     Command.Parameters.AddWithValue("@Password", Email.Text); 
     Command.Parameters.AddWithValue("@Email", Password.Text); 
     Command.ExecuteNonQuery(); 

     conn.Close(); 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     ExecuteConnection(); 
    } 
} 

。 また、データベースのパスワードとユーザー名が正しくなければなりません。接続をテストすると、正常に動作します。

ご協力いただきありがとうございます。

+2

あなたは全体のエラーメッセージを共有し、また私たちは、それが発生した行に知らせてくださいことはできますか? SQL – Bassie

+3

[SQL Injection](https://en.wikipedia)を読んでください。org/wiki/SQL_injection)最初に –

+0

'Insert into Registration 'は新しい行を作成し、何もチェックしません。 '(最初の)値( '+ FirstName.Text +") 'などのように、最初に列を指定する必要があります。また、' Command.Parameters.Add () 'など... Googleそれは。 –

答えて

1

これ以上の詳細がなければ、私が続行しなければならないのは、「ユーザーがログインできませんでした」というフレーズだけです。したがって、この接続を行うときにコードが実行されているプロセスを検討する必要があります。これがWebページのように見えるので、IISプロセスによって実行されていると推測されます(どのユーザーかを確認してください)。プロセスが接続文字列で指定したIPアドレスを「見る」ことができるかどうかはわかりません。私の推測はできないだろう。私はあなたがタグを使用しているので、あなたがMicrosoft SQL Serverを使用していると推測しています。

このエラーが発生する理由は、プロセスがネットワークを参照できるかどうか(ローカルサービスはネットワークを認識できないなど)、ファイアウォール(SQLサーバーが使用するポートをブロックする)、私はそれがデフォルトでオフになっていると思う)、混在モードの認証を許可する(バージョンによっては、これはデフォルトではオフであると思う)、多分データベース名が間違っているかもしれない。サーバー上に存在しないか、そのデータベースへのアクセス権がないか、または(一度だけ)エラーメッセージが実際に正しくあり、接続文字列で指定されたパスワードが正しくありません。

これがIIS上で実行されているのであれば、正確に同じコードをコンソールアプリケーションに入れて診断を支援することをお勧めします。コンソールアプリケーションを実行すると、IISユーザーではなくネットワークにアクセスするためのアクセス許可が付与された状態で実行されます。それがうまくいかない場合は、SQLサーバーと同じマシンでコンソールアプリケーションを実行することができます(可能な場合)。これが機能する場合は、ネットワーキング/接続/構成の問題であることがわかります。

上記のSQLインジェクションについての懸念事項(これらの問題に対処してくれてありがとう)と同様に、IDisposableであることと、表示されるものではなく「using」ステートメントの使い方をお読みになることをお勧めします上部に名前空間があります)。接続とコマンドの両方が使い捨てであるため、使用ブロックで最もよく使用されます。

これが役に立ちます。そうでない場合は、より多くの情報を提供する必要があります。

+0

@StephenBrownあなたはパスワードが間違っていたと言ったことを考えると、受け入れられた答え(私がそれを言及したので!)。 – Richardissimo

0

これは私が使用する接続文字列形式です。これはVS 2010でコード化されており、現在8年間製造中です。最初にVS 2008でコード化され、数年前にVS 2010にアップグレードされました。

connectionString="server=192.168.1.1;database=MyDb;uid=sa; pwd=Password" providerName="System.Data.SqlClient" 

希望します。

R/ プレスコット....

+0

ありがとうございます。私はそれを考え出した –

+0

あなたの答えを共有できますか? –

+0

@StephenBrownあなたの答えを共有することはできますか?答えの1つが問題の解決に役立った場合は、答えとしてマークしてください。 – Richardissimo