VC++でSQL文を作成する


VC++でSQL文を作成する=======================Author:至尊の赤ちゃん(杭州)Email:[email protected]:  2008-6-8
転載は以上の情報を添付してください.ありがとうございます.
目次:
1、プロフィール2、表構造3、SQL文を1つ書く4、プログラムで上のSQL文を生成する5、文字データ型6、MFCでCStringクラス7、終端語を使う
1、紹介
多くの友达がSQL文を构筑する时に问题に出会ったので、私は详しい短文を书くことにしました.長い間考えていましたが、今やっと始めました・・・
SQL文は文字列であり、生成プロセスは文字列をフォーマットするプロセスです.C言語の学習を始めたとき、sprintfライブラリ関数に接触しました.ここでは、主にsprintf関数を使用して文字列をフォーマットします.
2、表構造
ここでは、SQL Serverのサンプル・データベースを使用して説明します(変更があります).
表:authors
列|データ型au_id整形(プライマリキー)au_name文字phone文字city文字state文字
3、SQL文を書く
au_によるとidクエリー指定された著者名
SELECT au_name FROM authors WHERE au_id = 1
4、プログラムで上のSQL文を生成する
上は正しいSQL文です.プログラムで実現します.
char szBuf[]="SELECT au_name FROM authors WHERE au_id = 1";

MessageBox( szBuf );  //          

これにより、正しいSQL文はszBuf文字配列にあり、さまざまな方法で実行できます.
=======
注意深い友达はこのように要求を満たすことができないことに気づくことができて、auのためですidは固定された値ですが、実際には固定されていない値である可能性があります.どうすればいいですか.方法は次のとおりです.
int nID;
char szBuf[100];

nID = 10;  //          ID  

sprintf( szBuf , "SELECT au_name FROM authors WHERE au_id = %d" , nID );

MessageBox( szBuf );  //          

5、文字データ型
次に、州名CAの作成者の名前を検索する文字データ型の列を検索します.正しいSQL文は次のとおりです.
SELECT au_name FROM authors WHERE state = 'CA'
注意:CAの前後に一対一の引用符があります!
次にプログラムで生成します
char szState[]="CA";
char szBuf[100];

sprintf( szBuf , "SELECT au_name FROM authors WHERE state = '%s'" , szState );

MessageBox( szBuf );

注意:%sの前後に一対一の引用符があります!
文字タイプの列はどうして一重引用符を使うのですか?
これはデータベースエンジンが規定しているので、私たちはそうしなければなりません.
データベースエンジンが#番号を使用することを規定している場合は、VC++とは関係ありません.
6.MFCでCStringクラスを使用する
上ではsprintf関数を使用していますが、それは基礎です.
CStringクラス処理を使用します.
CString szState("CA");
CString szBuf;

szBuf.Format( "SELECT au_name FROM authors WHERE state = '%s'" , szState );

MessageBox( szBuf );

似ているように見えます実際,CStringクラス内部ではsprintf関数が用いられている.
7、終わりの言葉
上にはSELECT文しか使われていませんが、これを例にするととても簡単なので分かりやすいです.
他のInsert Update Deleteは、SQL構文が正しいことを保証すれば類似しています.
時間が経つのは早いですね.さようならを言う時です.
私はよくCSDNVC/MFC(http://bbs.csdn.net)フォーラム、私の名前を覚えてください:至尊の赤ちゃん(杭州)