この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
reactnative:db:sqlite [2019/02/20 07:14] 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> | ||
| ライン 75: | ライン 103: | ||
| ==== 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]] | [[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> | ||
| ライン 90: | ライン 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> | <code> | ||