2010年12月29日水曜日

SQL Anywhere SELECT結果でのUPDATE

あるテーブルのSELECT結果を使って別テーブルのUPDATEをする。

このようなことをしたい場合SQL Anywhereでは UPDATE~FROM~WHERE 構文を使うことで実現できる。この構文ではFROM句で取得したあるテーブルのデータをWHERE句で結合して更新をかける。

例として、TableAとTableBがあったときにTableAからcol1,col2列の値を読み込み、その値で同じpkeyを持つTableBの行を書き換えるには以下のようなSQLを使う。


UPDATE TableB SET col1=A.col1, col2=A.col2
FROM (
select pkey, col1, col2
from TableA
) A
WHERE pkey = A.pkey


他のDBでは同じことを複数の列をSETに書いて UPDATE table SET(col1,col2...)=(SELECT col1,col2...) のようにできるものもあるようだが、SQL Anywhereではこの構文は使えないようである。

2010年12月28日火曜日

SQL Anywhere PHP Module

SQL Anywhere を PHP でつかうための SQL Anywhere PHP Module。

SQL Anywhere バージョン10.0.1以降で使える。

ソースもあるのでサポート対象外のPHPバージョンについてもビルドをがんばれば何とかなるかもしれない。

ダウンロード

2010年12月8日水曜日

JSONLint

JSONをライブラリを使わずに生成して受け側でSyntax Errorが出てしまったときなど、括弧が多いフォーマットなので、どこが間違っているか目ではなかなか見つけられない。

そんなときにJSONLintのサイトを使うと便利。JSONをカット&ペーストで入れると、どこにエラーがあるかを表示して整形までしてくれる。

http://www.jsonlint.com/

2010年12月5日日曜日

Android エミュレータにメディアデータを追加

Androidエミュレーター(Virtual Device)にmp3などの音楽ファイルを転送し標準のメディアプレイヤーで再生できるようにする方法。たまにしかやらない作業なのでいつもやり方を忘れてしまう・・・ここにメモしておこう。ここで使ったホスト機はWindowsです。また、Virtual Deviceには作成したときにSDCARDの容量が適当に割り当てられていることとします。


  1. Virtual Device起動。

  2. コマンドプロンプトから adb shell でシェルに入り mkdir /sdcard/music でフォルダを作成する。

  3. コマンドプロンプトに戻り adb push {mp3ファイル} /sdcard/music を実行して、さっき作ったフォルダにmp3ファイルを転送。({mp3ファイル}のところにはファイル名いれる)

  4. Virtual Deviceのアプリの一覧から "Dev Tools" を実行し "Media Scanner" を実行する









"Media Scanner" を実行すると上記のような画面になり、標準のメディアプレイヤーで追加したファイルを認識できるようになる。