サーバに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(); } } }); }
なんとなく、もう少しスマートに出来ないのかな、と思うんだけど。
現状では、やっぱりこれなのかな。
コメント