文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>非Windows环境下使用Mono连接Sqlite数据库手记

非Windows环境下使用Mono连接Sqlite数据库手记

时间:2010-11-24  来源:aisk

Mono的配套IDE MonoDevelop虽然目前没有VS强大但是对于小型开发来说已经是绰绰有余了,不过目前最大的囧境就是对于Web开发没有设计试图,页面需要自己手动写HTML代码。

首先我们去Mono的项目主页:http://www.mono-project.com/Main_Page下载需要的工具。

对于Windows用户,如果已经安装有.net运行环境,可以不安装Mono运行环境(不过Sqlite的Ado.net驱动得单独下载),需要安装的只有Gtk#以及Monoevelop;

对于Linux用户,常见发行版(Ubuntu、Fedora)已经安装有Mono运行环境以及Gtk#,而Monoevelop可以去软件包管理中安装(主要要把数据库插件选上,如果需要做Web开发的调试服务器而不单独使用Apache的话还要装上XSP这个轻量级Web服务器)以及MonoDevelop;

对于MacOSX用户,需要安装Mono运行环境,Gtk#,以及Monoevelop,另外目前MonoDevelop在Mac下本地化有问题,中文不能正常显示,请删除包中中文简体繁体语言,使用英文。

下面是MonoDevelop的主界面截图:

下面我们新建一个控制台工程,工程名为MonoTest。

接下来在解决方案一栏右击References-Edit References…,添加对Mono.Data.Sqlite的引用(如果使用MS.net运行环境的话请另行下载Sqlite的Ado.net驱动):

然后在.cs中加上using Mono.Data.Sqlite; 接下来的就简单了,所有相关类都以Sqlite打头,比如SqliteConnection,SqliteDataAdapter,SqliteCommand。

下面写一个简单的实例程序,在命令行下运行,可以接受用户指令。

首先,在Main方法中添加一个Do…While…循环,定义一个字符串变量cmd,然后在循环中接受用户输入指令读入cmd中,判断cmd中的字符串,如果为“q”的话推出循环结束程序,如果为未定义指令则提示用户输入错误,如果为定义好的指令的话则执行相应函数。

这里是一个简单的源代码,只实现了简单的创建数据库,打开数据库,关闭数据库,执行输入的Sql语句。创建指令为“create [数据库名]”,打开为“open [数据库名]”,关闭为“close [数据库名]”,执行Sql语句为“sqlcmd [SQL语句]”。更多的功能没有实现,也没有做完善的意外检测,因此运行起来经常出错(表砖我……)

using System;

using System.Data;

using Mono.Data.Sqlite;

using System.IO;

namespace MonoTest

{

class MainClass

{

public static void Main (string[] args)

{

string cmd=null;

SqliteConnection con=new SqliteConnection();

con=null;

do

{

Console.Write(“->”);

cmd=Console.ReadLine();

string[] cmdarr=cmd.Split(‘ ‘);

//foreach(string a in cmdarr)

//{

// Console.WriteLine(a);

//}

if (cmdarr[0]==”create”)

CreateDb(cmdarr[1]);

else if (cmdarr[0]==”open”)

con=OpenDb(cmdarr[1]);

else if (cmdarr[0]==”close”)

{

CloseDb(cmdarr[1],con);

}

else if (cmdarr[0]==”sqlcmd”)

{

string cmdstr=null;

for (int i=1;i<cmdarr.Length;i++)

{

cmdstr=cmdstr+cmdarr[i]+” “;

}

//Console.WriteLine(cmdstr);

ExecuteSqlCmd(cmdstr,con);

}

else

{

Console.WriteLine(“Wrong command line,you can input ‘help’ for help.”);

}

}

while

(cmd!=”q”);

if (con.State==ConnectionState.Open)

con.Clone();

Console.WriteLine(“Quiting…”);

}

protected static void CreateDb (string DbName)

{

//Is this file exists?

if(File.Exists(DbName))

{

Console.WriteLine(“This file is already exist!”);

return;

}

else

{

//Create DatabaseFile

try

{

SqliteConnection.CreateFile(DbName);

Console.WriteLine(“Database File ‘”+DbName+”‘ is created successfully!”);

}

catch (Exception e)

{

Console.WriteLine(e.ToString());

}

return;

}

}

//Open Database

protected static SqliteConnection OpenDb (string DbName)

{

SqliteConnection con=new SqliteConnection(“Data Source=”+DbName);

if (!File.Exists(DbName))

Console.WriteLine(“Database ‘”+DbName+”‘ isn’t exist,please check your input.”);

else

{

//Open Database file

try

{

con.Open();

Console.WriteLine(“Database ‘”+DbName+”‘ opend successfully.”);

}

catch(Exception e)

{

Console.WriteLine(e.Message);

}

}

return con;

}

//Close Database

protected static void CloseDb (string DbName,SqliteConnection con)

{

if(con==null)

Console.WriteLine(“There is not a database opend.”);

else

{

if (con.State==ConnectionState.Open)

{

con.Close();

Console.WriteLine(“Database closed successfully.”);

}

else if (con.State==ConnectionState.Closed)

Console.WriteLine(“DThere is not a database opend.”);

}

return;

}

protected static void ExecuteSqlCmd (string CmdStr,SqliteConnection con)

{

if (con.State==ConnectionState.Open)

{

try

{

SqliteCommand sqlcmd=new SqliteCommand(CmdStr,con);

sqlcmd.ExecuteNonQuery();

Console.WriteLine(“SQL command executed successfully.”);

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

}

else if (con==null)

Console.WriteLine(“There is not a Database Connection.”);

else

Console.WriteLine(“There is not a Database Connection.”);

//Console.WriteLine(CmdStr);

return;

}

}

}

运行截图:

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载