[筆記] libpqxx - prepare statements

prepare語法是現今SQL主要防止SQL injection的方法(另一種是字串處理),prepare語法主要是限定SQL query語句中的變數,以防資料庫其他資料遭受破壞等。postgresSQL也有prepare語法。請見:http://www.postgresql.org/docs/9.1/static/sql-prepare.html

而libpqxx中也有prepare method。這個prepare框架一旦被定義後,它會存活於connetion物件存活期間(連線期間)。底下是範例,其中prepare_name爲使用者自定(case sensitive),之後會用到。

connection C(/*user parameter*/);

C.prepare("prepare_name","SELECT NAME FROM TESTTABLE WHERE id = $1");

再來是傳遞變數進入prepare的框架。


connection C(/*user parameter*/);
pqxx::work W(C);
C.prepare("prepare_name","SELECT NAME FROM TESTTABLE WHERE id = $1");
pqxx::result r = W.prepared("prepare_name")(ID).exec();
W.commit();

其中傳變數方法還有其他寫法,請見:http://stackoverflow.com/questions/31833322/how-to-prepare-statements-and-bind-parameters-in-postgresql-for-c

prepare方法有時會降低效率,其他細節都在官方paper中。

comments powered by Disqus