2016-10-25 6 views
3

txtFromから選択した日付をチェックして、その特定の日付が存在するかどうかを比較したいと思います。それは私に警告を与えるはずですが、チェックしません。初心者として、私はコードをうまく書いたかどうかわかりません、誰かが私を助けることができますか?これらは私のコードです:asp.net c#チェックエラー

string conn = WebConfigurationManager.ConnectionStrings["DIVIHOTELConnectionString"].ConnectionString; 
SqlConnection myconn = new SqlConnection(conn); 
SqlCommand cmd = new SqlCommand("select * from MyBooking where FromDate='" + txtFrom.Text + "'", myconn); 
myconn.Open(); 
SqlDataReader dr = cmd.ExecuteReader(); 
dr.Read(); 
if (txtFrom.Text == dr.GetString(1)) 
{ 
    ScriptManager.RegisterStartupScript(this, GetType(), "showalert","alert('This particular date has been booked already, please select new date !');", true); 
} 
+0

実行時エラー? –

+2

パラメータの使い方を学びます。文字列(特に日付を含む)を連結すると、間違った結果が得られることが保証されます。最悪の場合、ユーザーがそのテキストボックス(Sql Injection)に何か入力することができるので、データベース全体が簡単に失われる可能性があります。 – Steve

+0

FromDateのデータ型は? datetimeを仮定します。あなたはSelect *をしているので、あなたはあなたのデータリーダーで読んでいるフィールドオーダーは何ですか?スキーマが変更された場合は、列名を選択する必要があります。 –

答えて

1

私の提案

チェック何をDBに格納し、どのようなあなたのデータ型がvarchar

ようですので、あなたが両方を比較している、あなたの入力日付は、同じかではありませんされてあなたの時間が日付と一致するときに私の控えめな結果が得られます。現在のシナリオで結果が得られないと言います。

+0

と働いていますが、今は存在しない日付を書くとき、エラー –

+0

どうすればエラーが出るのか教えてください。 –

+0

実際のエラーとは何ですか? – jpaugh78

2

あなたのクエリは、このシーケンス[ID] ,[ClientID] ,[RoomID] ,[Amount] ,[DateBooked] ,[IsInBook] ,[FromDate] ,[EndDate]で列を返し、あなたがdr.getString(1)にアクセスする場合、これは[FromDate]ため[ClientID]ないために値を返すことは非常に明確です。

作業を完了させるために、正確なシーケンス番号を使用してください。

if (txtFrom.Text == dr.GetString(7)) 
{       ------^ 
    //your code here 
} 
+0

さて、彼は – Bharat

+0

を変更する必要があることはたくさんありますが、存在しない日付を書くと、エラーが発生します –

+0

どうすればエラーが出るのか説明できますか? –

1

まず、適切な日付形式のフィルタクエリすなわちパラメータのDataReaderからデータを読み出しながら、データ・フォーマットで 秒で適切な列名を指定します。