webservers跟mysql_Web Service中操作MySQL数据库

Web Service中操作MySQL数据库

注:本文还是Flex + Web Service + MySQL系列Blog中的一篇

上一篇实现了在Web Service中连接MySQL数据库,其实就是ASP.NET中连接MySQL数据库,并操作数据库。但在实际中,我们首先要判断连接的数据库是否存在,关于怎么样去判断,上一篇已经做了介绍,在这篇Blog中主要介绍当要连接的数据库不存在的时候,怎么去创建数据库。

其实在代码中创建数据库有很多的方法,比如SQL Server的osql和isql,但在MySQL中我没发现这样好的命令,所以只有另想办法了。在看MySQL Connector/NET的文档时,我发现了MySQLScript这个class,介绍如下:

Provides a class capable of executing a SQL script containing multiple SQL statements including CREATE PROCEDURE statements that require changing thedelimiter

显然可以使用这个class来执行一个MySQL脚本。已经一个简单的数据脚本文件,已经在上一篇中贴出来了(http://blog.csdn.net/li_007/archive/2008/12/15/3522956.aspx),语法可以参考它,还有很多MySQL高级的脚本语法可以参考MySQL的Help。

看Help知道MySQLScript的Script是一个string,所以需要将.sql的脚本文件读成一个string中,具体实现如下:

private string strCurDir = "";

public Service ()

{

//Uncomment the following line if using designed components

//InitializeComponent();

strCurDir = AppDomain.CurrentDomain.BaseDirectory.ToString();

}

private string GetMySQLScripts()

{

StreamReader fileReader = File.OpenText(strCurDir + "//App_Data//new_db.sql");

string strText = "";

while (-1 != fileReader.Peek())

{

string str = fileReader.ReadLine().Trim();

if (true == str.Contains("--")) //为了出掉.sql脚本中注释代码

{

str = "";

}

else

{

strText += str;

}

}

fileReader.Close();

return strText;

}

然后就是MySQLScript类的具体应用了,其实很简单,就像MySQLCommand一样使用,代码如下:

private void OnScriptCompleted(object sender, EventArgs Args)

{

StreamWriter runInfo = new StreamWriter(strCurDir + "//App_RunInfo//AppRunInfo.txt");

runInfo.WriteLine(DateTime.Now.ToLocalTime().ToString() + " Successfully Executed.");

runInfo.Close();

}

private void OnScriptError(object sender, MySqlScriptErrorEventArgs Args)

{

StreamWriter runInfo = new StreamWriter(strCurDir + "//App_RunInfo//AppRunInfo.txt");

runInfo.WriteLine(DateTime.Now.ToString() + " Error : "

+ Args.StatementText.ToString());

runInfo.Close();

}

private void InitDataBase()

{

string query = "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA";

MySqlConnection conn = new MySqlConnection ("server=127.0.0.1;user=root;password=1;database=information_schema");

MySqlCommand command = new MySqlCommand(query, conn);

conn.Open();

MySqlDataAdapter da = new MySqlDataAdapter();

da.SelectCommand = command;

DataSet ds = new DataSet();

da.Fill(ds);

String str = ds.GetXml();

if (false == str.Contains("new_db")) //不存在要连接的数据库,就用脚本创建

{

string scripts = GetMySQLScripts();

MySqlScript myScript = new MySqlScript(conn, scripts);

myScript.Error += new MySqlScriptErrorEventHandler(OnScriptError); //出错事件响应函数

myScript.ScriptCompleted += new EventHandler(OnScriptCompleted); //脚本成功执行事件响应函数

myScript.Execute();

}

conn.Close();

}

注意在实际的项目中,需要为数据库连接连接,脚本执行,文件读写等等这些加上异常处理。本文也是项目实际中的部分功能的演示,也是本人学习中点点滴滴的记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值