Adobe AIR中使用Flex串連Sqlite資料庫(2)(添加,刪除,修改以及語句參數)

來源:互聯網
上載者:User
系列文章導航
  1. Adobe AIR中使用Flex串連Sqlite資料庫(1)(建立資料庫和表)
  2. Adobe AIR中使用Flex串連Sqlite資料庫(2)(添加,刪除,修改以及語句參數)
  3. Adobe AIR中使用Flex串連Sqlite資料庫(3)(查詢)
  4. Adobe AIR中使用Flex串連Sqlite資料庫(4)(事務)
  5. Flex,Fms3相關文章索引
  6. Fms3和Flex打造線上群組視訊會議和視訊交談(附原代碼)
  7. 免費美女視訊交談,群組視訊會議功能加強版本(Fms3和Flex開發(附源碼))

本章主要總結資料庫的插入,刪除,修改,以及語句參數的使用
本章提到的同步和非同步作業,不明白的可以看上篇文章
http://www.cnblogs.com/aierong/archive/2009/01/22/flex_Sqlite_1.html

 

0.SQLStatement類介紹
SQLStatement執行個體用於針對通過 SQLConnection 執行個體開啟的本地 SQL 資料庫執行 SQL 陳述式。
SQLStatement執行個體通過將 SQLConnection 執行個體設定為 SQLStatement 執行個體的 sqlConnection 屬性的值來連結到 SQLConnection 執行個體。text 屬性用要執行的 SQL 陳述式的實際文本進行填充。如有必要,可以使用 parameters 屬性指定 SQL 陳述式參數的值,並通過調用 execute() 方法執行該語句。

1.插入資料
同步版本:
import mx.controls.Alert;
private var con:SQLConnection;

private function initApp():void
{
 var file:File = File.applicationStorageDirectory.resolvePath("myTestdb.db")
 
 con = new SQLConnection();
 var stmt:SQLStatement = new SQLStatement();
 
 try
 {
  con.open(file);
  
  stmt.sqlConnection = con;
  stmt.text="INSERT INTO emp (firstName, lastName, salary) VALUES ('f', 'l', 88)";
  stmt.execute();
 }
 catch(error:SQLError)
 {
  Alert.show(error.message);
  Alert.show(error.details);
 }
}
代碼說明:
SQLStatement類的執行個體用於針對通過 SQLConnection 執行個體開啟的本地 SQL 資料庫執行 SQL 陳述式

 

2.得到已插入行的資料庫產生的行標識
得到自動成長列的行標識數值
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = con;
stmt.text="INSERT INTO emp (firstName, lastName, salary) VALUES ('f', 'l', 88)";
stmt.execute();
 
var result:SQLResult = stmt.getResult();
var primaryKey:Number = result.lastInsertRowID;
   
Alert.show(primaryKey.toString());
代碼說明:
SQLResult 類提供對為響應 SQL 陳述式(SQLStatement 執行個體)執行而返回的資料的訪問
lastInsertRowID屬性:上次產生的行標識符(由 SQL INSERT 語句產生),如果執行的語句不是 INSERT 語句,則該值為 0。

 

3.語句參數的使用
在多次使用一個 SQL 陳述式但該語句中的值不同的情況下,最佳方法是使用包括參數的 SQL 陳述式而不是在 SQL 文本中包括字面值。參數是語句文本中的一個預留位置,每次執行語句時都將它替換為實際的值。
參數名稱由“:”或“@”字元後跟一個名稱組成,例如::itemName  @firstName
還可以使用未具名引數,使用“?”字元表示 SQL 陳述式中的參數。按照參數在語句中的順序,每個參數都分配有一個數字索引,數字索引從索引 0(表示第一個參數)開始。

使用參數的優點:
1.效能更佳
2.顯式資料類型指定
3.安全性更高

執行個體代碼:得到自動成長列的行標識數值(非同步版本)
private var stmt1:SQLStatement;
private function GetlastInsertRowID():void
{
 stmt1 = new SQLStatement();
 stmt1.sqlConnection = con;
 
 stmt1.text="INSERT INTO emp (firstName, lastName, salary) VALUES (@firstName, @lastName, @salary)";
 stmt1.parameters["@firstName"]="f";
 stmt1.parameters["@lastName"]="l";
 stmt1.parameters["@salary"]=88; 
 
 stmt1.addEventListener(SQLEvent.RESULT,okHandler);
 stmt1.addEventListener(SQLErrorEvent.ERROR,errorHandler);
 stmt1.execute();
}

private function okHandler(evt:SQLEvent):void
{
 Alert.show("插入成功");
 var re:SQLResult= this.stmt1.getResult();
 var id:Number=re.lastInsertRowID;
 Alert.show(id.toString());
}

private function errorHandler(evt:SQLErrorEvent):void
{
 Alert.show("失敗");
 Alert.show(evt.error.message);
 Alert.show(evt.error.details);
}
代碼說明:
此例題中用到了語句參數@firstName, @lastName, @salary,並分別賦值
要是使用未具名引數,把代碼修改如下即可(注意數字索引從0開始):
stmt1.text="INSERT INTO emp (firstName, lastName, salary) VALUES (?, ?, ?)";
stmt1.parameters[0]="f";
stmt1.parameters[1]="l";
stmt1.parameters[2]=88;

 

4.刪除操作
private function del():void
{
 var stmt:SQLStatement = new SQLStatement();
 stmt.sqlConnection = con;
 stmt.text="delete from emp where salary=:salary";
 stmt.parameters[":salary"]=88;
 stmt.execute();
 
 var result:SQLResult = stmt.getResult();
    var count:Number = result.rowsAffected;
   
    Alert.show("成功刪除"+count.toString()+"行");
}
代碼說明:
rowsAffected屬性:指示受此操作影響的行數
請注意,當相關的 SQL 操作為不帶 WHERE 子句的 DELETE 語句時(即該語句刪除表中的所有行),rowsAffected 屬性始終為 0,而不管刪除了多少行。如果您需要知道刪除的行數,則可以包括 WHERE 子句 WHERE 1 = 1,在這種情況下,將刪除所有行,並且 rowsAffected 屬性會精確反映已刪除的行數

 

5.修改操作
private function updateData():void
{
 var stmt:SQLStatement = new SQLStatement();
 stmt.sqlConnection = con;
 stmt.text="update emp set lastName=:lastName where salary=:salary";
 stmt.parameters[":lastName"]="la";
 stmt.parameters[":salary"]=88;
 stmt.execute();
 
 var result:SQLResult = stmt.getResult();
    var count:Number = result.rowsAffected;
   
    Alert.show("成功修改"+count.toString()+"行");
}
代碼說明:
把salary=88的lastName修改為"la"

 

6.代碼下載
http://files.cnblogs.com/aierong/Air_Test_SQLite2.rar

  

收藏與分享

收藏到QQ書籤  添加到百度搜藏 添加到雅虎收藏

RSS訂閱我 什麼是RSS?

     
        
     
     

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.