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