サーバにDBサーバ(MySQL)を構築して、スマートフォンアプリからデータを入力。
入力したデータをDBに保存。
そんなアプリを作る時、なんとなく端末から直接DBにアクセス出来そうな気もしますが。やっぱりできないんですね。
で、方法としては、スマホ端末側でXMLファイルを作成。
それをサーバ側に保存。
サーバ側でファイルを読み込んで、DBに書き込み。
ちなみにAndroidだとXMLファイルの作成はこんな感じ。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final int iUserId = 3;
// Create XMLボタン
Button btnInput = (Button) findViewById(R.id.btnInput);
btnInput.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DocumentBuilderFactory dbfactory = DocumentBuilderFactory
.newInstance();
try {
DocumentBuilder dbuilder = dbfactory.newDocumentBuilder();
// Documentノードの生成
Document document = dbuilder.newDocument();
// root要素の生成
Element root = document.createElement("catch");
// 要素を作成
Element user_id = document.createElement("user_id");
Text text = document.createTextNode(String.format("%1$011d",iUserId));
user_id.appendChild(text);
Element title_id = document.createElement("title_id");
text = document.createTextNode("1");
title_id.appendChild(text);
Element item_id = document.createElement("item_id");
text = document.createTextNode("9");
item_id.appendChild(text);
Element item_value = document.createElement("item_value");
text = document.createTextNode("43");
item_value.appendChild(text);
Element location = document.createElement("location");
text = document.createTextNode("霞ヶ浦");
location.appendChild(text);
Element comment = document.createElement("comment");
text = document.createTextNode("今日は寒かったですが、なんとかトップで釣りました!");
comment.appendChild(text);
// 各要素を親ノードへ追加
root.appendChild(user_id);
root.appendChild(title_id);
root.appendChild(item_id);
root.appendChild(item_value);
root.appendChild(location);
root.appendChild(comment);
// root要素をDocumentノードへ追加
document.appendChild(root);
//現在日時を取得する
final Calendar calendar = Calendar.getInstance();
//フォーマットパターンを指定して表示する
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
String sDateTime = sdf.format(calendar.getTime());
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer transformer = tffactory.newTransformer();
// XML保存先ディレクトリ
String path = Environment.getExternalStorageDirectory().toString() + "/xml/";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdir();
}
// ファイル名指定
File file = new File(path + sDateTime + "_" + String.format("%1$011d",iUserId) + ".xml");
if (!file.exists()) {
file.createNewFile();
}
transformer.transform(new DOMSource(document), new StreamResult(file));
Toast.makeText(MainActivity.this, "Saved", Toast.LENGTH_LONG).show();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (TransformerException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
});
}
なんとなく、もう少しスマートに出来ないのかな、と思うんだけど。
現状では、やっぱりこれなのかな。
コメント