在陳述式中使用參數Adobe AIR 1.0 以及更新的版本 使用 SQL 陳述式參數可以讓您建立可重複使用的 SQL 陳述式。當您使用陳述式參數時,陳述式之中的值可以變更 (例如正在加入 INSERT 陳述式中的值),但基本的陳述式文字維持不變。所以,使用參數可提供效能上的優勢,同時也更容易撰寫應用程式的程式碼。 瞭解陳述式參數應用程式經常會在應用程式中多次使用單一 SQL 陳述式,不過會稍做變化。例如,以存貨追蹤應用程式為例,使用者可以將新的存貨項目加入資料庫。將存貨項目加入資料庫的應用程式程式碼會執行 SQL INSERT 陳述式,此陳述式會實際將資料加入至資料庫。但是,每次執行陳述式,陳述式就會有些微的改變。明確地說,也就是,插入資料表中的實際值會不同,因為這些值屬於正在加入的存貨項目。 當您具有會在陳述式中以不同的值多次使用之 SQL 陳述式時,最佳的做法就是使用包含參數的 SQL 陳述式,而不要在 SQL 文字中使用常值。參數是陳述式文字中的預留位置,會在每次執行陳述式時以實際的值取代。若要在 SQL 陳述式中使用參數,請依一般做法建立 SQLStatement 實體。對於實際指定給 text 屬性的 SQL 陳述式,請使用參數預留位置,而不要使用常值。然後,請設定 SQLStatement 實體之 parameters 屬性中元素的值,以定義每個參數的值。parameters 屬性是關聯陣列,因此請使用下列語法來設定特定的值: statement.parameters[parameter_identifier] = value; 如果您使用命名的參數,則 parameter_identifier 會是字串;如果您使用未命名的參數,就會是整數索引。 使用命名的參數參數可以是命名的參數。命名的參數具有特定的名稱,可供資料庫用來比對參數值及其陳述式文字中的預留位置。參數名稱會包含「:」或「@」字元,後面加上名稱,如下列範例所示: :itemName @firstName 下面列出的程式碼會示範命名的參數用法: var sql:String = "INSERT INTO inventoryItems (name, productCode)" + "VALUES (:name, :productCode)"; var addItemStmt:SQLStatement = new SQLStatement(); addItemStmt.sqlConnection = conn; addItemStmt.text = sql; // set parameter values addItemStmt.parameters[":name"] = "Item name"; addItemStmt.parameters[":productCode"] = "12345"; addItemStmt.execute(); 使用未命名的參數除了使用命名的參數之外,您也可以使用未命名的參數。若要使用未命名的參數,請在 SQL 陳述式中使用「?」字元表示參數。每個參數都會根據陳述中參數的順序指定數字索引,第一個參數從索引 0 開始。下列範例會示範在上一個範例中使用未命名參數的版本: var sql:String = "INSERT INTO inventoryItems (name, productCode)" + "VALUES (?, ?)"; var addItemStmt:SQLStatement = new SQLStatement(); addItemStmt.sqlConnection = conn; addItemStmt.text = sql; // set parameter values addItemStmt.parameters[0] = "Item name"; addItemStmt.parameters[1] = "12345"; addItemStmt.execute(); 使用參數的優點在 SQL 陳述式中使用參數有多項優點:
|
|