2016-09-05 11 views
0

私はUWPアプリを持っており、データベースに携帯電話番号を検索する必要があります。データベースの検索UWP

searchButton.Click += delegate 

      { 

       telephone = searchtext.Text; 

        using (MySqlConnection connection = new MySqlConnection("Database= ******;Data Source=**********;User Id=**********;Password=********; SslMode=None; CharSet=utf8")) 
        { 

         connection.Open(); 


         MySqlCommand createCommand = new MySqlCommand("SELECT * FROM reg_user WHERE mob LIKE N'%+380675090373%'", connection); 
         EncodingProvider ppp; 
         ppp = CodePagesEncodingProvider.Instance; 
         System.Text.Encoding.RegisterProvider(ppp); 
         MySqlDataReader reader = createCommand.ExecuteReader(); 
        if (reader.HasRows) 
        { 
         while (reader.Read()) 
         { 
          Debug.WriteLine("{0}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}\t{11}\t{12}", reader.GetString(0), reader.GetString(1) 
          , reader.GetString(2), reader.GetString(3),reader.GetString(4), reader.GetString(5), reader.GetString(6),reader.GetString(7), reader.GetString(8), reader.GetString(9),reader.GetString(10), reader.GetString(11), reader.GetString(12)); 


         } 
        } 
        else 
        { 
         Debug.WriteLine("No rows found."); 
        } 
        reader.Close(); 

        //Debug.WriteLine(reader.ToString()); 
       } 
      }; 

私はtextboxから文字列を取得し、私はそれから取る文字列を検索する必要があります。

今、私はこのように検索します。

このような文字列を作成しましたtelephone = searchtext.Text;変数を貼り付けたい場所telephone変数はありますか?

私はそれが簡単な質問ですが、私は助けが必要です。

感謝の

+0

セキュリティのために、あなたは、インターネット上のコードサンプルを投稿したときに、接続文字列を匿名化/削除shoud。 – Antoine

答えて

1

クイックや汚れバージョン:に電話番号を交換してくださいあなたの電話変数によるあなたのSQLステートメント。

MySqlCommand createCommand = new MySqlCommand("SELECT * FROM reg_user WHERE mob LIKE N'%" + telephone + "%'", connection); 

これは、ユーザー入力をチェックしないと安全ではありません。 SQLインジェクション用のオープニングを作成しています。

より安全なバージョンを使用するには、パラメータを使用する必要があります。以下はthis documentationからインスピレーションを得た、例です。

string sql = @"SELECT * FROM reg_user WHERE mob LIKE N'%' + @telephone + '%'"; 
MySqlCommand cmd = new MySqlCommand(sql, connection); 
cmd.Parameters.AddWithValue("@telephone", "+3333333333"); 
0

変更しますこれにSQLコマンド:

"SELECT * FROM reg_user WHERE mob LIKE N'%' + @telephone + '%'"; 

あなたのSQLコマンドを実行する前に、次の行を追加します。

createCommand.Parameters.AddWithValue("@telephoneNumber", telephone); 
+0

貼り付けを試みますが、エラーがあります。 エラー\t CS0841 \tは、ローカル変数を使用することはできません「createCommand」は\t エラー\t CS0246 \t型または名前空間名と宣言される前に、「SqlParameter」が見つかりませんでした(あなたがusingディレクティブまたはアセンブリ参照が不足しています?) \tミラノ – Eugene

+0

大丈夫です。私はこのコードを追加する、私はSQLコマンドでsmthを変更する必要がありますか? – Eugene