この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
reactnative:db:sqlite [2019/02/10 16:23] ips |
reactnative:db:sqlite [2019/02/22 00:55] (現在) ips |
||
---|---|---|---|
ライン 7: | ライン 7: | ||
===== 基本 ===== | ===== 基本 ===== | ||
+ | |||
+ | 当たり前だが、パラメーター変数(?置換え)を使用する場合は、順番に気をつける必要がある。。。 | ||
<code> | <code> | ||
ライン 37: | ライン 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> | ||
ライン 70: | ライン 100: | ||
); | ); | ||
</code> | </code> | ||
+ | |||
+ | ==== 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> | ||
+ | |||
+ | //db.transaction(callback, error, success) | ||
+ | console.log("----- drop start -----") | ||
+ | db.transaction((tx)=>{console.log("callback")}, console.log("error"), console.log("success")) | ||
+ | console.log("----- drop end -----") | ||
+ | | ||
+ | [06:56:31] ----- drop start ----- | ||
+ | [06:56:31] error | ||
+ | [06:56:31] success | ||
+ | [06:56:31] ----- drop end ----- | ||
+ | [06:56:31] callback | ||
+ | | ||
+ | </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> | ||
+ |