树莓派:使用mono和C#调用MSSQL数据库

工作关系,接触最多的数据库还是微软的SQL Server,所以哪怕玩树莓派,都想着如何访问一下MSSQL。目前我能想到并且测试成功的有Python和PHP,以及能带UI的QT。Python和QT需要安装unixodbc,php则需要php-sybase库。最近突然又想起久闻大名的mono了,何不也试试?

说干就干,sudo apt-get install mono-complete

暂时只需要那么多。

开个文本编辑器输入测试代码,保存为test.cs:

using System;
using System.Data;
using System.Data.SqlClient;

namespace Test
{
	class Program
	{
		static void Main(string [] args)
		{
			Console.WriteLine("MSSQL 测试(编译@RPI)...\r\n");
			Console.WriteLine(GetVersion());
		}

		static string GetVersion()
		{
			//string conn = "server=192.168.1.10;database=master;user id=sa;password=****;";
			string conn = "server=192.168.1.10;database=A;user id=sa;password=****";

			// string sql = "select @@version";
			string sql = "select top 1 Remark from mono_test";

			using(SqlConnection db = new SqlConnection(conn))
			{
				SqlCommand cmd = new SqlCommand(sql,db);
				
				try
				{
					db.Open();

					string x = cmd.ExecuteScalar().ToString();

					return x;
				}
				catch(Exception ex)
				{
					return ex.Message;
				}
				finally
				{
					cmd.Dispose();
					db.Close();

				}
			}

		}

	}
}

然后编译:

mcs test.cs -r:System.Data

没有警告也没有错误。ls发现生成了test.exe了。用file命令验证,报告是PE32的可执行文件。最后用mono test.exe运行,成功获取Sql Server中的数据,而且中文亦无乱码。

树莓派:使用mono和C#调用MSSQL数据库_第1张图片

把这个exe复制到windows下,运行也毫无问题:

树莓派:使用mono和C#调用MSSQL数据库_第2张图片

有趣。那么,在Windows下用VS编译的console exe能在树莓派下运行吗?

打开VS2017,新建一个Windows 经典桌面的Console项目,.net framework版本4.5.2(当前mono的默认使用版本,可在树莓派中运行mcs --help,在-sdk选项中确认),将test.cs中的核心代码都复制过去(为了方便区分之前的代码,namespace改成了rpitest,提示语也改成了“编译@Windows”):

树莓派:使用mono和C#调用MSSQL数据库_第3张图片

编译,得到了windows下生成的rpitest.exe。将其复制到树莓派里,运行mono rpitest.exe,也能成功查询!

树莓派:使用mono和C#调用MSSQL数据库_第4张图片

哈,有点儿意思。

==== windows UI 照样支持 ====

树莓派:使用mono和C#调用MSSQL数据库_第5张图片

你可能感兴趣的:(树莓派,&,Arduino)