1. 程式人生 > >呼叫方法執行sql指令碼來建立資料庫

呼叫方法執行sql指令碼來建立資料庫

 private DataTable CreateFtpDatabase(string tablename,string dqdm,string dqmc,bool start=true)
        {
            DataTable recordinfo = null;
            try
            {
                string ftp = System.Configuration.ConfigurationManager.AppSettings["Ftp"];
                string serviceIp = System.Configuration.ConfigurationManager.AppSettings["Server"];
                string port = System.Configuration.ConfigurationManager.AppSettings["Port"];
                string username = System.Configuration.ConfigurationManager.AppSettings["UserName"];
                string password = System.Configuration.ConfigurationManager.AppSettings["Password"];
                string connstring = string.Format("Data Source='{0}';Port='{1}';Database='mysql';User Id='{2}';password='{3}';charset='utf8';pooling=true;max pool size=100;connection timeout=36000;Treat Tiny As Boolean=false;default command timeout=90000", "127.0.0.1", port, username, password);
                string sql = "SELECT * from information_schema.SCHEMATA WHERE SCHEMA_NAME='table_ftp'";
                var dt = Helpers.MySqlHelper.ExecuteDataTable(connstring, CommandType.Text, sql, null);
                if (dt.Rows.Count == 0)
                {
                    bool success = ExecuteSqlFile(@"C:\Users\Desktop\ftp.sql", connstring);
                    if (!success)
                    {
                        MessageBox.Show("建立資料庫失敗!");
                    }
                }
                string selectsql = "";          //查詢表返回一個datatable
               


                 recordinfo = Helpers.MySqlHelper.ExecuteDataTable(connstring, CommandType.Text, selectsql, null);
            }
            catch (Exception)
            {


            }
            return recordinfo;

        }

     private bool ExecuteSqlFile(string varFileName, String Conn)
        {
            using (StreamReader reader = new StreamReader(varFileName, System.Text.Encoding.GetEncoding("utf-8")))
            {
                MySqlCommand command;
                MySqlConnection Connection = new MySqlConnection(Conn);
                Connection.Open();
                try
                {
                    string line = "";
                    string l;
                    while (true)
                    {
                        // 如果line被使用,則設為空  
                        if (line.EndsWith(";"))
                            line = "";


                        l = reader.ReadLine();


                        // 如果到了最後一行,則退出迴圈  
                        if (l == null) break;
                        // 去除空格  
                        l = l.TrimEnd();
                        // 如果是空行,則跳出迴圈  
                        if (l == "") continue;
                        // 如果是註釋,則跳出迴圈  
                        if (l.StartsWith("--")) continue;


                        // 行數加1   
                        line += l;
                        // 如果不是完整的一條語句,則繼續讀取  
                        if (!line.EndsWith(";")) continue;
                        if (line.StartsWith("/*!"))
                        {
                            continue;
                        }


                        //執行當前行  
                        command = new MySqlCommand(line, Connection);
                        command.ExecuteNonQuery();
                    }
                }
                finally
                {
                    Connection.Close();
                }
            }


            return true;
        }  

sql指令碼:

     CREATE DATABASE  IF NOT EXISTS `table_ftp` /*!40100 DEFAULT CHARACTER SET utf8 */;


USE `table_ftp`;
DROP TABLE IF EXISTS `issuedinfo`;


CREATE TABLE `issuedinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `packetname` varchar(255) DEFAULT NULL,
  `dqdm` varchar(255) DEFAULT NULL,
  `dqmc` varchar(255) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  `adress` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;




DROP TABLE IF EXISTS `reporteinfo`;


CREATE TABLE `reporteinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `packetname` varchar(255) DEFAULT NULL,
  `dqdm` varchar(255) DEFAULT NULL,
  `dqmc` varchar(255) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  `school` varchar(255) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;