2012-03-29 18 views
0

私のタイトルは何を言いたいのですか?以前の類似の記事をすべて読みましたが、解決策を見つけることができませんでした。 EDIT:例外はありません。データベースの新しいデータが表示されません。 EDIT2:最初の4つの回答は、コードを編集してexecutenonqueryコマンドを追加したため、私の問題を解決しません。データベースにデータを挿入できません

int admin = 23; 
SqlConnection thisConnection = new SqlConnection(
    ConfigurationManager.ConnectionStrings[ 
    "Data Source=...;Persist Security Info=True;User ID=myusername;Password=mypassword"] 
    .ConnectionString); 
SqlCommand nonqueryCommand = thisConnection.CreateCommand(); 
thisConnection.Open(); 
nonqueryCommand.CommandText = "INSERT INTO Account (Username,Password,AdministratorId) VALUES (@username,@password,@admin)"; 

nonqueryCommand.Parameters.Add("@username", SqlDbType.VarChar, 20); 
nonqueryCommand.Parameters["@username"].Value = UsernameTextbox.Text.ToString(); 
nonqueryCommand.Parameters.Add("@password", SqlDbType.VarChar, 15); 
nonqueryCommand.Parameters["@password"].Value = PasswordTextbox.Text.ToString(); 
nonqueryCommand.Parameters.Add("@admin", SqlDbType.Int); 
nonqueryCommand.Parameters["@admin"].Value = admin; 

EDIT:nonquerycommand.ExecuteNonQuery(); 


thisConnection.Close(); 
+0

タイトルに「c#」などのプレフィックスを付けないでください。それがタグのためのものです。 –

+1

また、受け取った正確な例外は何ですか? –

+0

サイドコメント、パスワードを直接保存しないでください。最初に強力なハッシュ関数を適用し、* just * hashを格納します。これは、データベースが盗まれたときの頭痛を軽減します。 – oleksii

答えて

6

実際にはクエリを実行していないようです。接続を閉じる前に実行してください。

代わり

nonqueryCommand.Parameters.Add("@username", SqlDbType.VarChar,20); 
nonqueryCommand.Parameters["@username"].Value = UsernameTextbox.Text.ToString(); 

使用

nonqueryCommand.Parameters.AddWithValue("@username", UsernameTextbox.Text.ToString()); 

そして、あなたのクエリを実行する

nonquerycommand.ExecuteNonQuery(); 
2

nonquerycommand.ExecuteNonQuery(); 
+0

なぜそれが良いですか? – Dchris

+1

メンテナンスがずっと簡単です。 –

2

クリス・ファーマーは、お金を持っています。

追加...

nonqueryCommand.ExecuteNonQuery(); 
+0

この投稿は編集されたとは言わないので、Chrisさんの答えを見て、それをコピーして別の回答に貼り付けたようです。なぜ私はあなたがそれを行うのか、それがどんな価値があるのか​​について、ちょっと混乱しています。 –

+0

私は彼の答えを簡単に読んでいるに違いない。私がこれを投稿したとき、彼のポストで見たのは、 "あなたは実際にあなたのクエリを実行しているようではありません。接続を閉じる前に実行してください"。私はあなたのクエリを実行する方法を示すことによって役立つようにしようとしていました。 – ctorx

+0

これはもっと意味があります。そしてあなたの信用に、あなたはあなたの事件の権利を得ました。 :) –

3

2つのことはすぐにここに飛び出します。

  1. あなたはConfigurationManager.ConnectionStringsから接続文字列を取得するときは、設定ファイルではなく、接続文字列のことを自己に接続文字列の名前を渡す必要があります。あなたは有効な接続文字列を取得していない可能性があります。

  2. nonqueryCommandインスタンスでExecuteNonQuery()に電話する必要があります。

0

ます)thisConnection.Open(前に次の行を追加します。そのため、クエリ を実行する前に、コマンドへの接続を割り当てる必要があります。

nonquerycommand.ExecuteNonQuery(); 

またはクエリの実行またはこの

if(nonquerycommand.ExecuteNonQuery()>0){ //some message or function } 

を行うされていないかどうかを確認したい場合は以下のようにクエリを実行し、この後に接続を閉じる必要があり

nonqueryCommand.Connection=thisConnection; 
+0

opが完了したときにconnection.CreateCommandを使用すると、接続はすでにコマンドのインスタンスに割り当てられています。 –

0

戻り値はステートメントによって影響を受ける行の数です。

関連する問題