0

クライアントから送信された特定のデータを保存するサーバー プログラムがあります。1 つのデータは、クライアントのホスト名です。サーバーはホスト名が存在するかどうかを確認し、存在しない場合はその新しいデータを挿入します。このように見えるはずです。

hostname_id | hostname
------------------------
      1     | Admin
      2     | Guest_PC
      3     | Bob_PC2

私の問題は、新しく挿入されたデータが保存されないことです。ゼロを返し続けますが、何も保存しません。ここに私のコードがあります(正しいバージョンに編集されています)

string constring = "Database=chtbuster;Data Source=localhost;User Id=root;Password=''";
    string count1 = "SELECT COUNT(hostName) FROM chtbuster.hostnametable WHERE hostName=@machineName ";
    using (MySqlConnection conDataBase = new MySqlConnection(constring))
    {
            MySqlCommand cmd1Database = new MySqlCommand(count1, conDataBase);
            conDataBase.Open();

             long count = (long)cmd1Database.ExecuteScalar();
             if (count == 0)
             {
                  string insert_ht = "INSERT INTO chtbuster.hostnametable(hostName) VALUES(@machineName);";
                  MySqlCommand cmd5Database = new MySqlCommand(insert_ht, conDataBase);

                  cmd5Database.Parameters.AddWithValue("@machineName", machineName);
                  cmd5Database.ExecuteNonQuery();
                  //*test* output.Text += "\n Empty " + count;
             }
             else
             {
                  //not empty, insert other data
             }

}

以前に PHP データベースをコーディングしたことがありますが、C# データベースは初めてなので、かなり混乱しています。助けてください。ありがとうございました。

4

1 に答える 1

2

これは、EXISTS を使用して 1 ステップで実行できます。

IF NOT EXISTS (SELECT hostName FROM chtbuster.hostnametable WHERE hostName=@machineName)
  INSERT INTO chtbuster.hostnametable(hostName_id) VALUES(@machineName);

コメントで述べたように、結果を取得するにはクエリを実行する必要があります。

于 2015-10-05T16:57:12.500 に答える