ユーザ用ツール

サイト用ツール


reactnative:db:sqlite

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
reactnative:db:sqlite [2019/02/20 06:58]
ips
reactnative:db:sqlite [2019/02/22 00:55] (現在)
ips
ライン 39: ライン 39:
 ==== executeSql ==== ==== executeSql ====
  
-tx.executeSql(sqlStatement,​ arguments, success, error)+tx.executeSql(sqlStatement,​ arguments, successコールバック関数, errorコールバック関数)
 sqlStatement:​SQL sqlStatement:​SQL
 arguments:​SQLに?​を使用すると、置換え変数にできる。(プリペアードステートメント) arguments:​SQLに?​を使用すると、置換え変数にできる。(プリペアードステートメント)
 success,​error:​それぞれ自身のトランザクションと、結果の2つのパラメータが返る。 success,​error:​それぞれ自身のトランザクションと、結果の2つのパラメータが返る。
 <​code>​ <​code>​
-tx.executeSql('​select * from items where name=?'​,  +  executeSql = async (sql, params = []) => { 
-          ["safa"],  +    return new Promise((resolve,​ reject) => db.transaction(tx => { 
-          (tran, { rows +      ​tx.executeSql( ​sql params, (_, { rows }) =>  
-          ) => console.log(JSON.stringify(rows)) +      { 
-        );+        console.log("sql done")
 +        //​resolve(rows._array) 
 +        resolve(rows.length) 
 +      } 
 +      ​reject) 
 +    })) 
 +  } 
 +   
 + async componentDidMount(e){ 
 + 
 +    //​成功コールバック関数 
 +    let suc=function(){ 
 +      console.log("​success"​) 
 +    ​
 +     
 +    //​エラーコールバック関数 
 +    let fai=function(){ 
 +      console.log("​fail"​) 
 +    } 
 + 
 +    console.log("​----- start -----"​) 
 +    await this.executeSql('​select * from items',​[]).then((val)=>​console.log("​resulat="​ + val)) 
 +    ​.catch(()=>​console.log("​err"​)) 
 +    ​console.log("​----- end -----") 
 +     
 +[00:43:58] ----- start ----- 
 +[00:43:58] sql done 
 +[00:43:58] resulat=0 
 +[00:43:58] ----- end -----    ​
 </​code>​ </​code>​
  
ライン 74: ライン 102:
  
 ==== await/​asycnするためには? ==== ==== await/​asycnするためには? ====
 +[[https://​stackoverflow.com/​questions/​47345000/​react-native-handling-async-calls-to-sqllite-db|React Native : Handling Async calls to sqllite db]]
 +
 +excuteはコールバックしているので、Promiseを返すようにする必要がある。
 +<​code>​
 +
 +    executeSql = async (sql, params = []) => {
 +    return new Promise((resolve,​ reject) => db.transaction(tx => {
 +      tx.executeSql('​select * from items',​ [], (_, { rows }) => 
 +      {
 +      console.log("​sql done"​),​
 +      resolve(rows._array)
 +      }
 +      , reject)
 +    }))
 +
 +
 +    console.log("​----- start -----"​)
 +    await this.executeSql(null,​null)
 +    console.log("​----- end -----"​)
 +
 +[08:05:41] ----- start -----
 +[08:05:41] sql done
 +[08:05:41] ----- end -----
 +</​code>​
 +
 +===== 以下だだのメモ =====
 +
  
 <​code>​ <​code>​
ライン 89: ライン 144:
     ​     ​
 </​code>​ </​code>​
 +   ​executeSql = async (sql, params = []) => {
 +    return new Promise((resolve,​ reject) => db.transaction(tx => {
 +      tx.executeSql('​select * from items',​ [], (_, { rows }) => 
 +      {
 +      console.log("​sql done"​),​
 +      resolve(rows._array)
 +      }
 +      , reject)
 +    }))
 +  }
 +  ​
 +  ​
 +<​code>​
 +
 +  async getDB(){
 +    await db.transaction((tx)=>​{return "​callback"​},​ console.log("​error"​),​ console.log("​success"​))
 +  }
 +  ​
 +  async componentDidMount(e){
 +
 +    // db.transaction(callback,​ error, success)
 +     ​console.log("​----- drop start -----"​)
 +    await console.log(this.getDB())
 +    console.log("​----- drop end -----"​)
 +  }
 +  ​
 +[07:12:05] ----- drop start -----
 +[07:12:05] error
 +[07:12:05] success
 +[07:12:05] Promise {
 +[07:​12:​05] ​  "​_40":​ 0,
 +[07:​12:​05] ​  "​_55":​ null,
 +[07:​12:​05] ​  "​_65":​ 0,
 +[07:​12:​05] ​  "​_72":​ null,
 +[07:12:05] }
 +[07:12:05] ----- drop end -----
 +</​code>​
 +
reactnative/db/sqlite.1550613496.txt.gz · 最終更新: 2019/02/20 06:58 by ips