Hello,Worldまでできたので、前に作ったNodeサーバと連携してみます。MySQLのデータをNode.jsのWebサーバ経由で読み込みということですね。
たいしたことするわけでなくて、HttpWebRequestで取得したデータをLabelに設定するだけです。
プログラムにサーバへのhttpリクエストを追加。
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; //Http系クラス使用のため using System.IO; namespace HelloWorldApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); label1.Text = "Hello,World!"; try { string url = "http://localhost/" ; WebRequest request = (WebRequest )WebRequest.Create(url); WebResponse response = request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream, System.Text. Encoding.UTF8); string result = reader.ReadToEnd(); reader.Close(); stream.Close(); label1.Text = result; } catch(Exception ex) { label1.Text = ex.Message; } } } }
MySQLサーバとNode.jsサーバを起動したのちに、プログラム実行。
取得できました。HTMLで返してるので、そのまま設定されています。
きっと最新の開発環境だからJSONにしとけばいいでしょ、って適当な考えから通信をJSON化。数項目なのでサーバ側は手動JSON。
helloWorldDBJSON.js
var sys = require('sys'); var http = require('http'); var mysql = require('mysql'); var server = http.createServer( function (request,response){ var connection = mysql.createConnection({ host: 'localhost', database: 'personal', user: 'root', password: 'password' }); response.writeHead(200, {'Content-Type' : 'application/json'}); var query = connection.query('SELECT name,voice FROM pokemon ORDER BY name'); var resultObject = new Object(); var count = 0; query .on('error', function(err) { console.log('Error!: ', err ); response.write('Error!\n'); }) //結果用 .on('result', function(row) { if(count == 0) { response.write('{"result": ['); }else{ response.write(','); } count++; response.write('{'); response.write('"name": "' + row.name + '",'); response.write('"voice": "' + row.voice + '"'); response.write('}'); console.log('write Record Data'); }) .on('end', function() { response.write(']}'); console.log('response End'); response.end(); connection.end(); }); } ).listen(80); sys.log('Server is running!');
プログラム再起動。JSONで返ってきてることを確認。
さーて、あとはJSONパースするか、と調べてみました。きっと標準でいろいろJSON関連のライブラリが揃っていると思ったら…そうでもなかった。クライアントも手動JSONなのか?いや、それはさすがにちょっとな…。ということで、中途半端ですが、ここまでです。
今回、Surface Pro 2 + Visual Studio Express でほんの少しだけコード書いたわけですが、指の操作でコードをスクロールさせることができないのが、結構なストレスになりました。指でドラッグすると、選択操作になっちゃいます。まあ、マウスドラッグと同じなのでそりゃそうなんですが。わかってても、Webブラウザと行き来してると、ついついやっちゃうんですよね…。