calpuff-client-Form1.cs

来源:互联网 发布:mac分区失败 发生错误 编辑:程序博客网 时间:2024/05/23 15:05
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;// 数据库dllusing MySql.Data.MySqlClient;using System.IO;namespace ClientV1._1{           public partial class Form1 : Form    {        public static string SrcPath = "";       // db Part        public static string dbIp ="";        public static string dbName = "";        public static string dbUser = "";        public static string dbPasswd = "";        public static string modelname = "";        public static string startdate = "";        public static string enddate = "";        public static string nx = "";        public static string ny = "";        public static string xrefkm = "";        public static string yrefkm = "";        public static string dgridkm = "";        public static string identifier = "";                // for terrel  identifier        public static string gtopo30="";        // for ctgproc identifier        public static string glazas="";        public  const int maxFileNum = 10000; //#MaxLimit        public  string[] terrelFiles = new string[maxFileNum], ctgprocFiles = new string[maxFileNum];        // 取出最后的文件名        public  string[] terrelFileNames = new string[maxFileNum], ctgprocFileNames = new string[maxFileNum];        public   void init()        {            modelname = "";            startdate = "";            enddate = "";            nx = "";            ny = "";            xrefkm = "";            yrefkm = "";            dgridkm = "";            identifier = "";            gtopo30="";            glazas="";            textBox1.Text = "";            textBox2.Text = "";            textBox3.Text = "";            textBox4.Text = "";            textBox5.Text = "";            textBox6.Text = "";            comboBox1.SelectedIndex = -1;            comboBox2.SelectedIndex = -1;            SrcPath ="";            label13.Text = "Selected: C:\\" ;        }        // 四个基本参数的合法性检查        public static bool ParamValidate()        {              if (xrefkm == "")            {                MessageBox.Show("Please Input XREFKM");                return false;            }            if (yrefkm == "")            {                MessageBox.Show("Please Input YREFKM");                return false;            }            if (nx == "")            {                MessageBox.Show("Please Input NX");                return false;            }            if (ny == "")            {                MessageBox.Show("Please Input NY");                return false;            }            if (dgridkm == "")            {                MessageBox.Show("Please Input DGRIDKM");                return false;            }            // 合法性检查  至少是double            try            {                double.Parse(xrefkm);            }            catch            {                MessageBox.Show("XREFKM should be a float number");                return false;            }            try            {                double.Parse(yrefkm);            }            catch            {                MessageBox.Show("YREFKM should be a float number");                return false;            }            try            {                double.Parse(nx);            }            catch            {                MessageBox.Show("NX should be a float number");                return false;            }            try            {                double.Parse(ny);            }            catch            {                MessageBox.Show("NY should be a float number");                return false;            }            try            {                double.Parse(dgridkm);            }            catch            {                MessageBox.Show("DGRIDKM should be a float number");                return false;            }            //  全都没问题  返回合法            return true;        }        // 非静态资源 this调用即可        public bool DateAssignAndCheck()        {             dateTimePicker1.Format=DateTimePickerFormat.Custom;             dateTimePicker2.Format=DateTimePickerFormat.Custom;                          dateTimePicker1.CustomFormat="yyyy-MM-dd";             dateTimePicker2.CustomFormat="yyyy-MM-dd";             string year1 = dateTimePicker1.Value.Year.ToString();                          string month1 = dateTimePicker1.Value.Month.ToString();                          // 规范形式             if(dateTimePicker1.Value.Month<10)             {                 month1 = "0" + month1;             }             string day1 = dateTimePicker1.Value.Day.ToString();             if (dateTimePicker1.Value.Day < 10)             {                 day1 = "0" + day1;             }             string year2 = dateTimePicker1.Value.Year.ToString();             string month2 = dateTimePicker1.Value.Month.ToString();             // 规范形式             if (dateTimePicker2.Value.Month < 10)             {                 month2 = "0" + month2;             }             string day2 = dateTimePicker2.Value.Day.ToString();             if (dateTimePicker2.Value.Day < 10)             {                 day2 = "0" + day2;             }             startdate = year1 + "-" + month1 + "-" + day1;             enddate = year2 + "-" + month2 + "-" + day2;             int result = dateTimePicker1.Value.Date.CompareTo(dateTimePicker2.Value.Date);             if (result > 0)                 return false;                          else return true;        }          public static bool IdentifierValidate()        {                           int length = identifier.Length;                     for(int i=0;i<length;i++)            {                if (identifier[i] <= 'Z' && identifier[i] >= 'A') continue;                if (identifier[i] <= 'z' && identifier[i] >= 'a') continue;                if (identifier[i] <= '9' && identifier[i] >= '0') continue;                if (identifier[i] == '_') continue;                if (identifier[i] == '@') continue;                return false;            }            return true;        }        public static bool  DbTest()        {            MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();            // 到时候换成一个公网IP              string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";            conn.ConnectionString = connStr;            try            {                conn.Open();            }            catch            {                MessageBox.Show("Database Connection Error");                return false;            }            return true;        }        public  bool  ParamAssignAndCheck()        {            xrefkm = textBox1.Text;            yrefkm = textBox2.Text;            nx = textBox3.Text;            ny = textBox4.Text;            dgridkm = textBox5.Text;            identifier = textBox6.Text;            if (ParamValidate() == false)            {                return false;            }              if (DbTest() == false)            {                return false;            }            // 日期单独检查                      if (identifier == "")            {                MessageBox.Show("Identifier Should Be Non-empty");                return false;            }            // identifier 检查   需要连接数据库            if (IdentifierValidate() == false)            {                MessageBox.Show("Identifier Should Consist Of 'A-Z','a'-'z' '@' and '_'");                return false;            }            // 检查过关             return true;        }        public static int Existed(string _identifier)        {            MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();            string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";            conn.ConnectionString = connStr;            try            {                conn.Open();            }            catch            {                MessageBox.Show("Database Connection Error");                return -1;  // 代表DB 连接故障            }            MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();            cmd.Connection = conn;            cmd.CommandText = "select * from t_calpuf_conf where identifier=\"" + _identifier + "\"";             MySqlDataReader reader = cmd.ExecuteReader();            // 先检查identifier是否已经存在            if (reader.HasRows)            {                                conn.Close();                return 1;            }            else            {                conn.Close();                return 0;            }            // 关联新的cmd conn需要重启        }             public Form1()        {            InitializeComponent();            Point point = new Point(Screen.PrimaryScreen.WorkingArea.Width / 2 - this.Size.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - this.Size.Height / 2);//窗体位置            this.StartPosition = FormStartPosition.Manual;            this.Location = point;            //  导入配置文件            loadIni();        }              // 选择文件               //  db Conf        private void button8_Click(object sender, EventArgs e)        {            ServerConf form = new ServerConf();            Point point = new Point(Screen.PrimaryScreen.WorkingArea.Width / 2 - form.Size.Width / 2, Screen.PrimaryScreen.WorkingArea.Height / 2 - form.Size.Height / 2);//窗体位置            form.StartPosition = FormStartPosition.Manual;            form.Location = point;            form.ShowDialog();        }        public void enable()        {            this.Enabled = true;        }        // 从另一个表里        // Refresh terrel & ctgproc files        private void button9_Click(object sender, EventArgs e)        {            MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();            string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";            conn.ConnectionString = connStr;            try            {                conn.Open();            }            catch            {                MessageBox.Show("Database Connection Error");                return;            }            MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();            cmd.Connection = conn;                 cmd.CommandText = "select path,type from t_geo_file";                               System.Data.Common.DbDataReader reader = cmd.ExecuteReader();            if(!reader.HasRows)            {                MessageBox.Show("No GeoFiles Are Available,Please Contact The Server Provider");                return;            }            int indexOfTerrel = 0;            int indexOfCtgproc = 0;            // 每个task            while (reader.Read())            {                string path = reader.GetString(reader.GetOrdinal("path"));                // 生成inp 文件                string name = reader.GetString(reader.GetOrdinal("type"));                if (name == "terrel")                    terrelFiles[indexOfTerrel++] = path;                else ctgprocFiles[indexOfCtgproc++] = path;            }            if (indexOfTerrel==0)            {                MessageBox.Show("No Terrel Files Are Available,Please Contact The Server Provider");                return;            }            if (indexOfCtgproc == 0)            {                MessageBox.Show("No Ctgproc Files Are Available,Please Contact The Server Provider");                return;            }            // 将文件名作为数据源            for (int i = 0; i < indexOfTerrel;i++ )            {                terrelFileNames[i] = getName(terrelFiles[i]);            }            for (int i = 0; i < indexOfCtgproc;i++ )            {                ctgprocFileNames[i] = getName(ctgprocFiles[i]);            }            cmd.Dispose();//此处可以不用调用,              conn.Close();// 离开 using 块, connection 会自行关闭              // 更新数据源            comboBox1.DataSource = terrelFileNames;            comboBox2.DataSource = ctgprocFileNames;            MessageBox.Show("Update Successful");        }        // 【Run Terrel】        private void button5_Click(object sender, EventArgs e)        {            // 首先更新后台记录的一些参数            if (this.ParamAssignAndCheck() == false)            {                // 提示已经弹窗过了                return;            }            // 是否已经用过此Identifier          if(Existed(identifier)==1)           {                   MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");               return;           }           //这才是最普通的           else           {               // 本模型特殊的               if (comboBox1.SelectedIndex < 0)               {                   MessageBox.Show("Please select a GTOPO30 File");                   return;               }               gtopo30= terrelFiles[comboBox1.SelectedIndex];               // 四个基本参数验证,数据库,文件,日期都通过  开始插入数据               MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();               string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";               conn.ConnectionString = connStr;               conn.Open();               MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();               cmd.Connection = conn;               // 关联新的cmd conn需要重启                                            cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,gtopo30,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10)";               cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);               cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.Int32);               cmd.Parameters[0].Value = startdate;               cmd.Parameters[1].Value = enddate;               cmd.Parameters[2].Value = xrefkm;               cmd.Parameters[3].Value = yrefkm;               cmd.Parameters[4].Value = nx;               cmd.Parameters[5].Value = ny;               cmd.Parameters[6].Value = dgridkm;               cmd.Parameters[7].Value = identifier;               cmd.Parameters[8].Value = "terrel";               cmd.Parameters[9].Value = gtopo30;               cmd.Parameters[10].Value = 0;               // 已经确认过可以连接了               cmd.ExecuteNonQuery();               cmd.Dispose();//此处可以不用调用,                 conn.Close();// 离开 using 块, connection 会自行关闭                 MessageBox.Show("Submit  Successful");               // 提交一次任务之后初始化   不成功时保留不抹掉               this.init();           }                }        // Run Ctgproc        private void button6_Click(object sender, EventArgs e)        {                          // 首先更新后台记录的一些参数            if (this.ParamAssignAndCheck() == false)            {                // 提示已经弹窗过了                return;            }            // 是否已经用过此Identifier            if (Existed(identifier) == 1)            {                MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");                return;            }            //这才是最普通的            else            {                if (comboBox2.SelectedIndex < 0)                {                    MessageBox.Show("Please select a GLAZAS File");                    return;                }                glazas = ctgprocFiles[comboBox2.SelectedIndex];                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();                string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";                conn.ConnectionString = connStr;                conn.Open();                MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();                cmd.Connection = conn;                // 关联新的cmd conn需要重启                               cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10)";                cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.Int32);                cmd.Parameters[0].Value = startdate;                cmd.Parameters[1].Value = enddate;                cmd.Parameters[2].Value = xrefkm;                cmd.Parameters[3].Value = yrefkm;                cmd.Parameters[4].Value = nx;                cmd.Parameters[5].Value = ny;                cmd.Parameters[6].Value = dgridkm;                cmd.Parameters[7].Value = identifier;                cmd.Parameters[8].Value = "ctgproc";                cmd.Parameters[9].Value = glazas;                cmd.Parameters[10].Value = 0;                // 已经确认过可以连接了                cmd.ExecuteNonQuery();                cmd.Dispose();//此处可以不用调用,                  conn.Close();// 离开 using 块, connection 会自行关闭                  MessageBox.Show("Submit  Successful");                // 提交一次任务之后初始化   不成功时保留不抹掉                this.init();            }        }        // Run Makegeo--综合前一二两个模型        private void button3_Click(object sender, EventArgs e)        {            // 首先更新后台记录的一些参数            // Common            if (this.ParamAssignAndCheck() == false)            {                  // 提示已经弹窗过了                return;            }            // 是否已经用过此Identifier            if (Existed(identifier) == 1)            {                MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");                return;            }            //这才是最普通的            else            {                // 本模型特殊的                if (comboBox1.SelectedIndex < 0)                {                    MessageBox.Show("Please select a GTOPO30 File");                    return;                }                gtopo30 = terrelFiles[comboBox1.SelectedIndex];                // 四个基本参数验证,数据库,文件,日期都通过  开始插入数据                if (comboBox2.SelectedIndex < 0)                {                    MessageBox.Show("Please select a GLAZAS File");                    return;                }                glazas = ctgprocFiles[comboBox2.SelectedIndex];                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();                string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";                conn.ConnectionString = connStr;                conn.Open();                MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();                cmd.Connection = conn;                // 关联新的cmd conn需要重启                                cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,gtopo30,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11)";                cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@11", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters[0].Value = startdate;                cmd.Parameters[1].Value = enddate;                cmd.Parameters[2].Value = xrefkm;                cmd.Parameters[3].Value = yrefkm;                cmd.Parameters[4].Value = nx;                cmd.Parameters[5].Value = ny;                cmd.Parameters[6].Value = dgridkm;                cmd.Parameters[7].Value = identifier;                cmd.Parameters[8].Value = "makegeo";                cmd.Parameters[9].Value = gtopo30;                cmd.Parameters[10].Value = glazas;                cmd.Parameters[11].Value = 0;                cmd.ExecuteNonQuery();                cmd.Dispose();//此处可以不用调用,                  conn.Close();// 离开 using 块, connection 会自行关闭                  MessageBox.Show("Submit  Successful");                // 提交一次任务之后初始化   不成功时保留不抹掉                this.init();            }        }        // Run calwrf  -- 只需要选日期        private void button7_Click(object sender, EventArgs e)        {               // DateAssignAndCheck 包含判断与赋值                  if (this.DateAssignAndCheck() == false)                {                MessageBox.Show("Date Selection Error");                return;                }                               // 很特殊  因为不在ParamAssign里面                identifier = textBox6.Text;                if(identifier=="")                {                    MessageBox.Show("Identifier Should Be Non-empty");                    return;                }                if (IdentifierValidate() == false)                {                                       MessageBox.Show("Identifier Should Consist Of 'A-Z','a'-'z' '@' and '_'");                    return;                }                if (DbTest() == false)                {                    return;                }                if (Existed(identifier) == 1)                {                    MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");                    return;                }                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();                string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";                conn.ConnectionString = connStr;                conn.Open();                MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();                cmd.Connection = conn;                cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,identifier,modelname,done) values(@0,@1,@2,@3,@4)";                cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.Int32);                cmd.Parameters[0].Value = startdate;                cmd.Parameters[1].Value = enddate;                cmd.Parameters[2].Value = identifier;                cmd.Parameters[3].Value = "calwrf";                cmd.Parameters[4].Value = 0;                // 已经确认过可以连接了                cmd.ExecuteNonQuery();                cmd.Dispose();//此处可以不用调用,                  conn.Close();// 离开 using 块, connection 会自行关闭                  MessageBox.Show("Submit  Successful");                // 提交一次任务之后初始化                this.init();                    }        // Run calmet--需要calwrf的结果  还需要makegeo  而makegeo 依赖于terrel 和ctgproc        private void button4_Click(object sender, EventArgs e)        {             // 需要选日期            if (DateAssignAndCheck() == false)            {                MessageBox.Show("Date Selection Error");                return ;            }            if (this.ParamAssignAndCheck() == false)            {                // 提示已经弹窗过了                return;            }            // 是否已经用过此Identifier            if (Existed(identifier) == 1)            {                MessageBox.Show("This Identifier Has Been Occupied,Please Choose Another");                return;            }            //这才是最普通的            else            {                // 本模型特殊的                if (comboBox1.SelectedIndex < 0)                {                    MessageBox.Show("Please select a GTOPO30 File");                    return;                }                gtopo30 = terrelFiles[comboBox1.SelectedIndex];                // 四个基本参数验证,数据库,文件,日期都通过  开始插入数据                if (comboBox2.SelectedIndex < 0)                {                    MessageBox.Show("Please select a GLAZAS File");                    return;                }                glazas = ctgprocFiles[comboBox2.SelectedIndex];                MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();                string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";                conn.ConnectionString = connStr;                conn.Open();                MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();                cmd.Connection = conn;                // 关联新的cmd conn需要重启                               cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,gtopo30,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11)";                cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters.Add("@11", MySql.Data.MySqlClient.MySqlDbType.VarChar);                cmd.Parameters[0].Value = startdate;                cmd.Parameters[1].Value = enddate;                cmd.Parameters[2].Value = xrefkm;                cmd.Parameters[3].Value = yrefkm;                cmd.Parameters[4].Value = nx;                cmd.Parameters[5].Value = ny;                cmd.Parameters[6].Value = dgridkm;                cmd.Parameters[7].Value = identifier;                cmd.Parameters[8].Value = "calmet";                cmd.Parameters[9].Value = gtopo30;                cmd.Parameters[10].Value = glazas;                cmd.Parameters[11].Value = 0;                cmd.ExecuteNonQuery();                cmd.Dispose();//此处可以不用调用,                  conn.Close();// 离开 using 块, connection 会自行关闭                  MessageBox.Show("Submit  Successful");                // 提交一次任务之后初始化   不成功时保留不抹掉                this.init();            }        }        // Choose a file        private void button2_Click_1(object sender, EventArgs e)        {             OpenFileDialog dialog = new OpenFileDialog();            dialog.Multiselect = false;   // 单选            if (dialog.ShowDialog() == DialogResult.OK)            {                SrcPath = dialog.FileName;                // 1 显示上传的文件路径 2 连接服务器将文件上传到blob里面去~  db端取出来                label13.Text = "Selected: "+SrcPath;            }            else            {                MessageBox.Show("No file is selected");            }        }              // Upload and Run calpuff        private void button1_Click_1(object sender, EventArgs e)        {            if (SrcPath == "")            {                MessageBox.Show("Please Choose a File First");                return;            }            else            {             // 检查之前几个模型   提醒用户选择同样的Id,run之间的几个模型             // 将文件读入字节流             byte[] SrcBiFile = null;               SrcBiFile = File.ReadAllBytes(SrcPath);             //然后存到数据库里就行了~      几乎是一样的             if (this.ParamAssignAndCheck() == false)             {                 // 提示已经弹窗过了                 return;             }             // 需要选日期             if (DateAssignAndCheck() == false)             {                 MessageBox.Show("Date Selection Error");                 return;             }                         if (comboBox1.SelectedIndex < 0)             {                 MessageBox.Show("Please select a GTOPO30 File");                 return;             }             gtopo30 = terrelFiles[comboBox1.SelectedIndex];             if (comboBox2.SelectedIndex < 0)             {                 MessageBox.Show("Please select a GLAZAS File");                 return;             }             glazas = ctgprocFiles[comboBox2.SelectedIndex];             // 四个基本参数验证,数据库,文件,日期都通过  开始插入数据             MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();             string connStr = "server=" + Form1.dbIp + ";user id=" + Form1.dbUser + ";password=" + Form1.dbPasswd + ";database=" + Form1.dbName + ";pooling=false;charset=utf8";             conn.ConnectionString = connStr;             conn.Open();             MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();             cmd.Connection = conn;             // 关联新的cmd conn需要重启                         cmd.CommandText = "insert into t_calpuf_conf(startdate,enddate,xrefkm,yrefkm,nx,ny,dgridkm,identifier,modelname,srcfile,gtopo30,glazas,done) values(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12)";             cmd.Parameters.Add("@0", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@1", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@2", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@3", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@4", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@5", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@6", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@7", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@8", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@9", MySql.Data.MySqlClient.MySqlDbType.Blob);             cmd.Parameters.Add("@10", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@11", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters.Add("@12", MySql.Data.MySqlClient.MySqlDbType.VarChar);             cmd.Parameters[0].Value = startdate;             cmd.Parameters[1].Value = enddate;             cmd.Parameters[2].Value = xrefkm;             cmd.Parameters[3].Value = yrefkm;             cmd.Parameters[4].Value = nx;             cmd.Parameters[5].Value = ny;             cmd.Parameters[6].Value = dgridkm;             cmd.Parameters[7].Value = identifier;             cmd.Parameters[8].Value = "calpuff";             cmd.Parameters[9].Value = SrcBiFile;             cmd.Parameters[10].Value = gtopo30;              cmd.Parameters[11].Value = glazas;             cmd.Parameters[12].Value = 0;             // 已经确认过可以连接了             cmd.ExecuteNonQuery();             cmd.Dispose();//此处可以不用调用,               conn.Close();// 离开 using 块, connection 会自行关闭                          MessageBox.Show("Submit  Successful");             // 提交一次任务之后初始化             this.init();            }        }                 // 用于筛选文件名用         public static string getName(string path)        {            int index =0;                        int length=path.Length;            for(int i=0;i<length;i++)            {                if (path[i] == '\\') index = i;            }            return path.Substring(index + 1, length - index - 1);        }         public static void loadIni()         {             string iniPath = System.Environment.CurrentDirectory + "\\" + "CalpuffModel.ini";             if (!File.Exists(iniPath))             {                 MessageBox.Show("CalpufModel.ini is missing ,please place it in " + iniPath);                 return;             }             // 先获取最大行~             int lineCnt = 0;             FileStream fs = new FileStream(iniPath, FileMode.Open, FileAccess.Read);             StreamReader sr = new StreamReader(fs);             string tempStr = "";             while (tempStr != null)             {                 tempStr = sr.ReadLine();                 lineCnt++;             }             lineCnt--;  // 有一位位移             string[] ini = new string[lineCnt + 100];             fs = new FileStream(iniPath, FileMode.Open, FileAccess.Read);             sr = new StreamReader(fs);             int index = 0;             tempStr = "";             while (tempStr != null)             {                 tempStr = sr.ReadLine();                 ini[index++] = tempStr;             }             index--; // 此时index就是行数             // 这样做其实很麻烦的  完全可以一次性就申请多一点  但是既然现成的代码也有 就这样写吧             string[] key = new string[index];             string[] value = new string[index];             string[] keyAndValue = new string[100];// 2就够了             for (int i = 0; i < index; i++)             {                 string curStr = ini[i];                 int wordsCnt = 0;                 infoExtract(keyAndValue, ref wordsCnt, curStr);                 key[i] = keyAndValue[0];                 value[i] = keyAndValue[1];             }             // 有点枚举  但是数据规模比较小              for (int i = 0; i < index; i++)             {                 string curKey = key[i];                 string curValue = value[i];                 if (curKey == "dbIp") dbIp = curValue;                 else if (curKey == "dbName") dbName = curValue;                 else if (curKey == "dbUser") dbUser = curValue;                 else if (curKey == "dbPasswd") dbPasswd = curValue;                 //else if (curKey == "ftpIp") ftpIp = curValue;                 //else if (curKey == "ftpUser") ftpUser = curValue;                 //else if (curKey == "ftpPasswd") ftpPasswd = curValue;                 //else if (curKey == "inpDir") inpDir = curValue;                 //else if (curKey == "exeDir") exeDir = curValue;                 //else if (curKey == "wrfoutDir") wrfoutDir = curValue;                 //else if (curKey == "outputDir") outputDir = curValue;                 //else if (curKey == "srcDir") srcDir = curValue;             }             sr.Close();             fs.Close();         }                 public static void infoExtract(string[] param, ref int tokenNum, string str)         {             str = str.Trim();             str += " ";             int cnt = 0;             while (str != " ")             {                 for (int i = 0; i < str.Length; i++)                 {                     if (str[i] == ' ')                     {                         param[cnt++] = str.Substring(0, i);                         str = str.Substring(i, str.Length - i);                         str = str.Trim();                         str += " "; // 为了最后一次推出循环                         break;   //  这个break 很关键  因为找到了就应该进入下一次循环了                     }                 }             }             tokenNum = cnt;         }         private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)         {             System.Diagnostics.Process.Start("http://calpuff.sinaapp.com");          }         private void Form1_Load(object sender, EventArgs e)         {         }    } // class definition}   // namesapce

0 0
原创粉丝点击