0

私はC#でモバイルアプリケーションを開発しています。SQLiteデータベースを使用してデータを保存しています。SQLiteデータベースには、顧客に関連する情報を保存しています。その中で、私は日付をmm / dd / yy12:54:30PM形式で保存しています。ここで、開始日と終了日に基づいて顧客データを取得したいと思います。私は次のコードを使用しています

ShowRegistrationKeyDetails ShowRegKeyDetailsObj = new ShowRegistrationKeyDetails();
// set properties
          ShowRegKeyDetailsObj.FromDate = FromdateTimePicker.Value.ToString();
        ShowRegKeyDetailsObj.ToDate = TodateTimePicker.Value.ToString();

これらの値に基づいてSQLクエリを実行すると、適切な結果が得られません。上記のFromdateTimePicker.TextとTodateTimePicker.Textの値をmm/dd / yy12:54:30PM形式に変換する必要があります。私は次のコードを使用しています

public SQLiteDataReader getClient_And_RegistrationKeys(int Customer_ID, String FromDt, String ToDt)
    {
        SQLiteDataReader SQLLiteDrObj = null;
        DataManager myDatabase = new DataManager("CompNet.db");
        myDatabase.Init(false);

        string[] Parameter = new string[] { "@Val_Customer_ID", "@Val_FromDt", "@Val_ToDt" };
        Object[] Objval = new Object[] { Customer_ID, FromDt, ToDt };

        string sqlCommandText = "Select Activation_Date, Standard_ID, Client_Key, Registration_Key from Activation_Details where Customer_ID=@Val_Customer_ID And Activation_Date between @Val_FromDt And @Val_ToDt";
        SQLLiteDrObj = myDatabase.ExecuteReader(sqlCommandText, Parameter, Objval);

        return SQLLiteDrObj;
    }

私はこのコードを試しました。現在、希望する形式で日付を取得していますが、必要な行を出力として取得していません。出力に行はありません。どこが間違っているのですか?コードを教えていただけますか?

4

1 に答える 1

7

Textで始まるために使用しないでください-DateTimePicker.Value値をとして取得するために使用しますDateTime

理想的には、SQLiteを使用するときにもテキストに変換しないでください。フォーマットするのではなく、パラメーター化されたクエリを使用してください。SQLiteでC#からのパラメーター化されたクエリを使用する一例として、この記事を参照してください。

原則として、可能な限りテキストを読まないようにしてください。ユーザーに値を表示するのに最適ですが、さまざまな形式などに注意することなく、適切なデータを取得できると確信できるのはお粗末です。

于 2010-10-14T07:39:40.963 に答える