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(); }         

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

 

你可能感兴趣的:(ASP.NET)