稍熟悉了MonoDevelop和PostgreSql后,开始使用Linux系统安装使用Mono。
我在VM虚拟机下安装了Ubuntu12.04版,Ubuntu现在做的,启动越来越慢,唉。。
安装完成后,根据http://www.cnblogs.com/qqloving/archive/2011/10/29/2228934.html安装完成了Mono和MonoDevelop;
然后根据同样的方法,安装完成了PostgreSql9.1版和pgAdmin III,pgAdmin III安装完成后,根据
http://blog.youkuaiyun.com/xiaoniaozhubo/article/details/7520044 设置完成了数据库,至此开发环境和数据库全都安装完毕,下面可以测试
一下。
1. 先建立数据库
PostgreSql之前我并没有使用过,刚打开pgAdmin竟然有一种无从下手的感觉。。
PostgreSql初始会有一个postgres的库,我们不动它,新建了一个数据库Test,完成后在Schemas节下有一个public节(对于我来说
PostgreSql对权限及安全的控制达到了近乎‘恶心’的程度,它可以对每一个字段,每个人能有什么操作权限都能定义),你可以再添加新的节,
就好象同一个数据库中又有多个库一样!当然我们现在只是测试,PostgreSql的深入理解留待之后慢慢学。
在public节下新建表users,字段username(varchar(20)),age(int) ,据说表名和字段名最好小写,具体什么原因,以后再说。
表建好后,添加两条记录,右击users表节,选择Scripts->INSERT Script,进入脚本编写界面
运行,记录写入了数据库中。
因为刚使用pgAdmin III,对里面的功能不是很了解,找了半天没有找到能够像MSSQL那样能图形化的插入的功能,大家如果知道,希望能告诉我,谢谢。
2. 数据库弄好后,就可以启动MonoDevelop,建立一个Console程序,步骤和Windows下一模一样。
工程建立好后,添加一个新类ConnToSql,因为是数据库操作,所以我们要先添加相应的引用,编辑References,添加Npgsql和System.Data引用。
代码如下:
using System;
using Npgsql;
using System.Data;
namespace Hello_Mono
{
public class ConnToSql
{
string connectStr;
NpgsqlConnection npgConn;
NpgsqlCommand npgComm;
NpgsqlDataAdapter npgDA;
public ConnToSql ()
{
connectStr = "uid=xxx; pwd=xxx; host=localhost; database=Test";
npgConn = new NpgsqlConnection(connectStr);
}
public string[] GetUsers()
{
npgConn.Open();
string sqlStr = "select * from users";
npgComm = new NpgsqlCommand(sqlStr, npgConn);
npgDA = new NpgsqlDataAdapter();
npgDA.SelectCommand = npgComm;
DataTable dt = new DataTable();
int rowCount = npgDA.Fill(dt);
if (rowCount == 0) return null;
string[] res = new string[dt.Rows.Count];
string str;
for (int i = 0; i < dt.Rows.Count; i++)
{
str = "";
for (int j = 0; j < dt.Columns.Count - 1; j++)
{
str += dt.Rows[i][j].ToString() + ",";
}
str += dt.Rows[i][dt.Columns.Count - 1].ToString() + ";";
res[i] = str;
}
return res;
}
}
}
然后,MainClass编辑如下:
using System;
namespace Hello_Mono
{
class MainClass
{
public static void Main (string[] args)
{
TestConnToSql();
Console.ReadKey();
}
private static void TestConnToSql()
{
ConnToSql conn = new ConnToSql();
string[] users = conn.GetUsers();
if (users == null) return;
int len = users.Length;
for (int i = 0; i < len; i++)
{
Console.WriteLine(users[i]);
}
}
}
}
F5运行结果如下:

至此,本次安装测试完成