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ブラウザと行き来してると、ついついやっちゃうんですよね…。

