2016-05-25 6 views
3

私はタイマー用に設定されたグローバル変数 "I"を作成していますが、ユーザーがゲームレベルをプレイして他のユーザーとデータベースにレベル時間を格納しています。これは私がすでに持っているものです。データベースにタイマー値を保存しますか? c#

public static class Global 
{ 
    public static int I = 0; 
} 

^これはタイマーのグローバル変数です。

 SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Adam\Documents\Data2.mdf;Integrated Security=True;Connect Timeout=30"); 
     SqlDataAdapter sad = new SqlDataAdapter("Select Count(*) From Login where Username= '" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'", con); 
     SqlCommand cmd = new SqlCommand("INSERT INTO HighScore (Username, Score) VALUES(@Username,@Score)", con); 
     DataTable dt = new DataTable(); //empty table 
     sad.Fill(dt); 
     if (dt.Rows[0][0].ToString() == "1") 
     { 
      con.Open(); 
      cmd.Parameters.AddWithValue("@USERNAME", txtUsername.Text); 
      cmd.Parameters.AddWithValue("@Score", Global.I); 
     } 
     else // else it will display this error 
     { 
      MessageBox.Show("Please enter the correct login details"); 
     } 

あなたは私が私のデータベースでハイスコアテーブルにあるGlobal.Iとaddwithvalue @Scoreを取ってみました見ることができるように^^これは、ゲームの終了画面のコードです。 ボタンをクリックすると、データベースに何も書き込まれませんが、試して保存するときにエラーは発生しません。これが混乱しています。 助けていただければ幸いです。

+0

データアダプターなどは非常に時代遅れの技術であることをご存じですか。エンティティフレームワークを使用してください。 – usr

+0

実際の質問について:実際にコマンドを実行していますか?そのコードを掲示し、その行にブレークポイントを置き、その行がヒットしていることを確認してください。 – usr

+1

ナー、その大丈夫。しかし、本当にあなたが書くクエリを実行する必要があります。それはいつも役立ちます。 – Will

答えて

1

コマンドを実行する前に、まず接続を開く必要があります。 Fill() !!を呼び出した後、接続を開始しています。 cmdも実行する必要があります。試してみてください:あなたが正しくパラメータを使用する方法を知っているということも立派である

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Adam\Documents\Data2.mdf;Integrated Security=True;Connect Timeout=30"); 
SqlDataAdapter sad = new SqlDataAdapter("Select Count(*) From Login where Username= '" + txtUsername.Text + "' and Password='" + txtPassword.Text + "'", con); 

SqlCommand cmd = new SqlCommand("INSERT INTO HighScore (Username, Score) VALUES(@Username,@Score)", con); 
con.Open(); 
cmd.Parameters.AddWithValue("@USERNAME", txtUsername.Text); 
cmd.Parameters.AddWithValue("@Score", Global.I); 
DataTable dt = new DataTable(); //empty table 
sad.Fill(dt); 
cmd.ExecuteNonQuery(); 

、しかし、あなただけの代わりに、両方のクエリの1のケースでそれらを使用しています。

+1

聖モルイのおかげであなたはそれが私のために働いている! :) –

関連する問題