2

私は学校の PAT を行っており、次のように修正しています。入力したメール アドレス名前ID 番号生年月日性別を送信したいのですが、すべて文字列です。私のステートメントは次のとおりです。

Adoquery1.sql.text := 'insert into besprekings 
                       values('email', 'name', 'Id', 'birth', 'gender', 'town')'; 

フィールドは次のとおりです。

 Email(string), Name(string), ID(string), Birth(string), Gender(string), town(string) 

これは宿題ではなく、私の年数の 25% を占めるプロジェクトです。私はすべてを終えましたが、これを正しくすることはできません。学校で学んだことのない新しいことを取り入れる必要があります。私にとっては、メール (windows 8) などのプログラムを開き、これを行うことで、助けようとしている皆さんに本当に感謝しています。

4

1 に答える 1

9

SQL インジェクションを防ぐために、パラメーター化されたクエリを使用する必要があります。今のアプリではそれを気にする必要はないかもしれませんが、最初から正しく行う習慣を身につけるのが最善です。コードの一部をお見せしますので、自分で完成させる方法を見つけてください。

まず、SQL を適切に設定します。挿入する列の名前と、それらを設定するために使用するパラメーター名 ( で始まる部分:) を指定します。

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO beskprekings (email, name, Id)');
ADOQuery1.SQL.Add('VALUES (:email, :name, :Id)');

VALUES次に、リストで使用したのと同じ名前を使用して、パラメーターに挿入する実際の値を入力します。

ADOQuery1.Parameters.ParamByName('email').Value := email;
ADOQuery1.Parameters.ParamByName('name').Value := name;
ADOQuery1.Parameters.ParamByName('id').Value := Id;

次に、クエリを実行します。

パラメーター化されたクエリを使用することの追加の利点は、一度実行すると、パラメーターを再設定して再度実行できることです。データベースはクエリに対して必要なことを既に行っているためprepare(ヒント: マークした単語は ADO やその他のデータベースの意味を持っています。調べる必要があります)、何度も何度も使用するとはるかに高速になります。

于 2012-08-06T19:35:59.297 に答える