• 仿ISQL功能的实现,可以实现批处理功能


    具体请见下载文件:/Files/bigmouthz/DNet写的数据库isql执行程序(含源码).rar
    部分代码如下:
      
    DBCore.DataBaseVisitor.AbsDBHelper dbhelper = null ;

      private void bt_DBLink_Click(object sender, System.EventArgs e)
      {
       try
       {
        this.GetDBConfig(xml);
        this.GetControlValue();
        dbhelper = GetDBHelper();
        System.Windows.Forms.MessageBox.Show("数据库连接正常!");
        this.rtb_State.Text += "数据库连接正常! :_)\r\n";
       }
       catch
       {
        System.Windows.Forms.MessageBox.Show("数据库连接失败!");
        this.rtb_State.Text += "数据库连接失败! :_(\r\n";
       }
      }

      private void bt_LoadDBConfig_Click(object sender, System.EventArgs e)
      {
       this.GetDBConfig(xml);
       this.SetControlValue();
       this.rtb_State.Text += "数据库配置载入完成! :_)\r\n";
      }

      private void bt_SaveDBConfig_Click(object sender, System.EventArgs e)
      {
       this.GetControlValue();
       this.SetDBConfig(xml);
       this.rtb_State.Text += "文件已经保存完成! :_)\r\n";
      }

      private void bt_TestDBLink_Click(object sender, System.EventArgs e)
      {
       try
       {
        this.GetDBConfig(xml);
        this.GetControlValue();
        DBCore.DataBaseVisitor.AbsDBHelper dbhelper = GetDBHelper();
        object o = dbhelper.ExecuteScalar(TestSql);
        this.rtb_State.Text = "测试时间:" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")+ "\r\n";
        this.rtb_State.Text +=  o == null ? "None Data!":o.ToString();
        this.rtb_State.Text += "执行完成! :_)\r\n";
        this.rtb_sql.Text = TestSql;
        System.Windows.Forms.MessageBox.Show("测试通过!数据库连接正常!");
       }
       catch
       {
        System.Windows.Forms.MessageBox.Show("数据库连接测试失败!");
        this.rtb_State.Text += "数据库连接测试失败! :_)\r\n";
       }
      }

      private void bt_load_Click(object sender, System.EventArgs e)
      {
       System.Windows.Forms.OpenFileDialog OFD;
       OFD = new System.Windows.Forms.OpenFileDialog();
       if(OFD.ShowDialog() == DialogResult.OK)
       {
        System.IO.StreamReader sr = new System.IO.StreamReader(OFD.FileName,System.Text.Encoding.GetEncoding("gb2312"));
        this.rtb_sql.Text = sr.ReadToEnd();
        sr.Close();
        this.rtb_State.Text += "载入文件完成! :_)\r\n";
       }
      }

      private void batch_Exec()
      {
       string split = "\n";
       string tmp = this.rtb_sql.Text;

       int ibit = 0;
       int itmp = 0;
       while (ibit >= 0)
       {
        ibit = tmp.IndexOf(split,itmp);
        if (ibit - itmp < 0) break;
        string line = tmp.Substring(itmp, ibit - itmp);
        itmp = ibit + 1;
        if (line == null || line == "")  continue;
        auto_Exec(line);
       }
      }

      private void auto_Exec(string filepath)
      {
       try
       {
        System.IO.StreamReader sr = new System.IO.StreamReader(filepath,System.Text.Encoding.GetEncoding("gb2312"));
        this.rtb_sql.Text = sr.ReadToEnd();
        sr.Close();
        this.rtb_State.Text += "自动载入文件完成! :_)\r\n";
        Singe_Exec();
       }
       catch
       {
        this.rtb_sql.Text = "";
        this.rtb_State.Text += "自动载入文件失败! :_(\r\n";
       }
      }

      private void Singe_Exec()
      {
       if (dbhelper == null)
       {
        try
        {
         this.GetDBConfig(xml);
         this.GetControlValue();
         dbhelper = GetDBHelper();
         this.rtb_State.Text += "数据库连接成功! :_)\r\n";
        }
        catch
        {
         System.Windows.Forms.MessageBox.Show("数据库连接失败!");
         this.rtb_State.Text += "数据库连接失败! :_(\r\n";
        }
       }

       try
       {
        string sql = this.rtb_sql.Text;
        sql = sql.Replace("\n"," ").Replace("\r"," ").Replace("\t"," ");
        if (this.cb_resulttype.Checked)
        {
         System.Data.DataSet ds = dbhelper.ExecuteDataset(sql);
         this.dg_display.DataSource = ds;
         this.dg_display.Expand(-1); 
         this.rtb_State.Text += "执行时间:" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")+ "\r\n";
         this.rtb_State.Text += "执行完成! :_)\r\n";
        }
        else
        {
         int o = dbhelper.ExecuteNonQuery(sql);
         this.dg_display.DataSource = null;
         this.rtb_State.Text += "执行时间:" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")+ "\r\n";
         this.rtb_State.Text += "执行影响行数:" + o.ToString() +"\r\n";
         this.rtb_State.Text += "执行完成! :_)\r\n";
        }
       }
       catch
       {
        System.Windows.Forms.MessageBox.Show("执行语句失败!:-(");
        this.rtb_State.Text += "执行语句失败! :_(\r\n";
       }
      }

      private void bt_Exec_Click(object sender, System.EventArgs e)
      {
       if (this.cb_ExecType.Checked)
       {
        batch_Exec();
       }
       else
       {
        Singe_Exec();
       }
      }

      #region Control_DBConfigVar
      private void SetControlValue()
      {
       this.cb_dblink.Text = this.DBConnection;
       this.tb_UserID.Text = this.UserID;
       this.tb_PassWord.Text = this.Password;
       this.tb_DBAddress.Text = this.DataSource;
       this.tb_DBName.Text = this.InitialCatalog;
      }

      private void GetControlValue()
      {
       this.DBConnection = this.cb_dblink.Text;
       this.UserID = this.tb_UserID.Text;
       this.Password = this.tb_PassWord.Text;
       this.DataSource = this.tb_DBAddress.Text;
       this.InitialCatalog = this.tb_DBName.Text;
      }
      #endregion

      #region DBConfig

      private string xml = System.Environment.CurrentDirectory + "/DBC.dll";
      private string Sql="user id=$0$;password=$1$;data source=$2$;initial catalog=$3$;persist security info=False";//Sql专用引擎连接串
      private string OleDb="Provider=sqloledb;Data Source=$2$;Initial Catalog=$3$;User Id=$0$;Password=$1$;";//OleDb引擎连接串
      private string Odbc="Driver={SQL Server};Server=$2$;Database=$3$;Uid=$0$;Pwd=$1$;";//Odbc引擎连接串

            private string DBConnection;//选择连接的方式 Sql|Odbc|OleDb
      private string UserID;//数据库用户ID 在升级数据库中要求使用SA用户
      private string Password;//数据库连接口令
      private string DataSource;//数据库服务器的地址或者数据库服务器名称
      private string InitialCatalog;//指定要访问的数据库名称

      private string TestSql = "select * from dtproperties";//测试Sql

      private void SetDBConfig(string xml)
      {
       /* *
     <?xml version="1.0" encoding="gb2312"?>
    <DBConfig>
      <DataBase>
        <!--这个区域禁止修改Begin-->
        <Sql>user id=$0$;password=$1$;data source=$2$;initial catalog=$3$;persist security info=False</Sql>
        <Odbc>Driver={SQL Server};Server=$2$;Database=$3$;Uid=$0$;Pwd=$1$;</Odbc>
        <OleDb>Provider=sqloledb;Data Source=$2$;Initial Catalog=$3$;User Id=$0$;Password=$1$;</OleDb>
        <!--这个区域禁止修改End-->
        
        <DBConnection>Sql</DBConnection> <!--选择连接的方式 Sql|Odbc|OleDb -->
        <UserID>Sa</UserID> <!--数据库用户ID 在升级数据库中要求使用SA用户-->
        <Password>jsl</Password>     <!--数据库连接口令-->
        <DataSource>10.200.1.251</DataSource> <!--数据库服务器的地址或者数据库服务器名称-->
        <InitialCatalog>Qinghai</InitialCatalog><!--指定要访问的数据库名称-->
      </DataBase>
    </DBConfig>
    <!--FrameWork DBConfig.XML-->
        * */
       XmlTextWriter writer = new XmlTextWriter(xml,System.Text.Encoding.UTF8);
       writer.Formatting = System.Xml.Formatting.Indented;
       writer.IndentChar = '\t';
       writer.WriteStartDocument();
       writer.WriteComment("DataBase Config." + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
       writer.WriteStartElement("DBConfig");
       writer.WriteStartElement("DataBase");
       writer.WriteComment("这个区域禁止修改Begin");
       writer.WriteElementString("Sql","user id=$0$;password=$1$;data source=$2$;initial catalog=$3$;persist security info=False");
       writer.WriteElementString("OleDb","Provider=sqloledb;Data Source=$2$;Initial Catalog=$3$;User Id=$0$;Password=$1$;");
       writer.WriteElementString("Odbc","Driver={SQL Server};Server=$2$;Database=$3$;Uid=$0$;Pwd=$1$;");
       writer.WriteComment("这个区域禁止修改End");
       writer.WriteElementString("DBConnection",DBConnection);
       writer.WriteComment("选择连接的方式 Sql|Odbc|OleDb");
       writer.WriteElementString("UserID",UserID);
       writer.WriteComment("数据库用户ID 在升级数据库中要求使用SA用户");
       writer.WriteElementString("Password",Password);
       writer.WriteComment("数据库连接口令");
       writer.WriteElementString("DataSource",DataSource);
       writer.WriteComment("数据库服务器的地址或者数据库服务器名称");
       writer.WriteElementString("InitialCatalog",InitialCatalog);
       writer.WriteComment("指定要访问的数据库名称");
       writer.WriteElementString("TestSql","select * from dtproperties");
       writer.WriteComment("测试用的Sql");
       writer.WriteEndElement();
       writer.WriteEndElement();
       writer.WriteEndDocument();
       writer.WriteComment("DBCore DBConfig.XML");
       writer.Flush();
       writer.Close();
      }


      private void GetDBConfig(string xml)
      {
       XmlTextReader reader = null;
       try
       {
        reader = new XmlTextReader(xml);
        while(!reader.EOF)
        {
         while(reader.Read())
         {
          if (reader.NodeType == XmlNodeType.Element)
          {
           switch(reader.Name)
           {
            case "Sql":
             Sql = reader.ReadElementString("Sql"); break;
            case "OleDb":
             OleDb = reader.ReadElementString("OleDb"); break;
            case "Odbc":
             Odbc = reader.ReadElementString("Odbc"); break;
            case "DBConnection":
             DBConnection = reader.ReadElementString("DBConnection"); break;
            case "UserID":
             UserID = reader.ReadElementString("UserID"); break;
            case "Password":
             Password = reader.ReadElementString("Password"); break;
            case "DataSource":
             DataSource = reader.ReadElementString("DataSource"); break;
            case "InitialCatalog":
             InitialCatalog = reader.ReadElementString("InitialCatalog"); break;
            case "TestSql":
             TestSql =  reader.ReadElementString("TestSql"); break;
           }
          }
          else if (reader.NodeType == XmlNodeType.EndElement)
          {
           break;
          }
         }
        }
       }
       finally
       {
        if (reader != null)  reader.Close();
       }
      }


      private DBCore.DataBaseVisitor.AbsDBHelper GetDBHelper()
      {
       DBCore.DataBaseVisitor.AbsDBHelper dbhelper ;
       switch(DBConnection)
       {
        case "Sql":
         dbhelper = new DBCore.DataBaseVisitor.JSLSqlHelper();
         Sql = Sql.Replace("$0$",UserID);
         Sql = Sql.Replace("$1$",Password);
         Sql = Sql.Replace("$2$",DataSource);
         Sql = Sql.Replace("$3$",InitialCatalog);
         dbhelper.SetDBConnection = Sql;
         break;
        case "OleDb":
         dbhelper = new DBCore.DataBaseVisitor.JSLOleDbHelper();
         OleDb = OleDb.Replace("$0$",UserID);
         OleDb = OleDb.Replace("$1$",Password);
         OleDb = OleDb.Replace("$2$",DataSource);
         OleDb = OleDb.Replace("$3$",InitialCatalog);
         dbhelper.SetDBConnection = OleDb;
         break;
        case "Odbc":
         dbhelper = new DBCore.DataBaseVisitor.JSLOdbcHelper();
         Odbc = Odbc.Replace("$0$",UserID);
         Odbc = Odbc.Replace("$1$",Password);
         Odbc = Odbc.Replace("$2$",DataSource);
         Odbc = Odbc.Replace("$3$",InitialCatalog);
         dbhelper.SetDBConnection = Odbc;
         break;
        default :
         dbhelper = null;
         break;
       }
       return dbhelper;
      }


      #endregion

      private void bt_SaveFile_Click(object sender, System.EventArgs e)
      {
       System.Windows.Forms.SaveFileDialog SFD;
       SFD = new System.Windows.Forms.SaveFileDialog();
       SFD.Filter = "txt files (*.txt)|*.txt|sql Files(*.sql)|*.sql|All files (*.*)|*.*";
       SFD.Title = "Save an Sql/Text File";
       SFD.RestoreDirectory = true ;
       if (SFD.ShowDialog() == DialogResult.OK)
       {
        if(SFD.FileName != "")
        {
         using (System.IO.StreamWriter sw = new System.IO.StreamWriter(SFD.OpenFile(),System.Text.Encoding.GetEncoding("gb2312")))
         {
          sw.Write(this.rtb_sql.Text);
          sw.Close();
         }
        }
       }
      }


     }

  • 相关阅读:
    查看gpu和cpu使用情况 linux
    Oracle通过数据文件进行 数据恢复
    LeetCodeJava题解 283. Move Zeroes
    LeetCodeJava题解 844. Backspace String Compare
    LeetCodeJava题解 27. Remove Element
    LeetCodeJava题解 367. Valid Perfect Square
    LeetCodeJava题解 26. Remove Duplicates from Sorted Array
    EasyExcel实现合并一列的多行数据
    编辑qml的工具及插件
    qml学习(Qt Quick)
  • 原文地址:https://www.cnblogs.com/bigmouthz/p/323037.html
Copyright © 2020-2023  润新知