树莓派:使用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中的数据,而且中文亦无乱码。

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

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

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

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

哈,有点儿意思。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值