Ubuntu 16.04 LTS + mono(c#) で Linux版 SQL Server にアクセスしてみる

Ubuntu 16.04 LTS + mono(c#) で LinuxSQL Server にアクセスしてみる
 
MONO + LLVM は下記でも試したのだが、16.04 LTS でのビルドは問題ないので、ついでに必要場部分だけまとめる
Ubuntu 18.04 で MONO + LLVM をビルドしてみる
※18.04 LTS ではビルドに失敗することが多い
動作の確認もかねて vs2017 で作成した SQL Server にアクセスするコードを動かしてみる
※もう少しちゃんとしたコードで試せよなぁ・・・
※フォークしているllvmが本体にマージされるまでは、この手順で試してみるかな?
※本体とのマージに関してはどこかに記述があった気はするんだけど
 
Ubuntu 16.04 LTS で MONO + LLVM をビルドしてみる
Mono LLVMのインストール
適当な dir で


$ git clone --recursive git://github.com/llvm.git
$ cd llvm
$ ./configure --prefix=/opt/llvm --enable-optimized --enable-targets="x86 x86_64"
$ make
$ sudo make install
以下の環境変数を設定する

export MONO_USE_LLVM=1
PATH=/opt/llvm/bin:/opt/mono/bin:$PATH:/opt/mssql-tools/bin
mono/monoのインストール
適当な dir で

$ git clone --recursive git@github.com:mono/mono
$ cd mono
$ ./autogen.sh --prefix=/opt/mono --with-llvm=/opt/llvm --enable-llvm --enable-loadedllvm --enable-llvm-runtime --with-wasm=yes
$ make
$ sudo make install
・VS2017で対象データにアクセスするコードを作成後 Ubuntu にコピー&修正する
※デフォで追加されている以下を削除
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System;
using System.Data.SqlClient;

namespace Con0001
{
class Program
{
static void Main(string[] args)
{
string constr = @"Data Source=xxx.xxx.xx.xxx;";
constr += "Initial Catalog=demo;";
constr += "User ID=demo;";
constr += "Password =demo;";
constr += "Connect Timeout=60;";
constr += "Persist Security Info=True";

SqlConnection con = new SqlConnection(constr);
con.Open();
try
{
string sqlstr = "SELECT * FROM ZIPCODE WHERE SEQ = '00000001'";
SqlCommand com = new SqlCommand(sqlstr, con);
SqlDataReader sdr = com.ExecuteReader();

while (sdr.Read() == true)
{
Console.WriteLine(sdr["SEQ"] + "," + sdr["PREFCODE"] + "," + sdr["PREFKANJI"] + "," + sdr["CITIESKANJI"]);
}
}
finally
{
Console.ReadLine();
con.Close();
}
}
}
}

$ mcs Con0001.cs -r:System.Data.dll
$ mono Con0001.exe
00000001,01 ,北海道 ,札幌市中央区
 
$ which mcs
/opt/mono/bin/mcs
$ which mono
/opt/mono/bin/mono