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

具体请见下载文件:/Files/bigmouthz/DNet写的数据库isql执行程序(含源码).rar
部分代码如下:
  DNETISQL.GIF
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();
     }
    }
   }
  }


 }

转载于:https://www.cnblogs.com/bigmouthz/archive/2006/01/25/323037.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高性能定时器】时间堆(最小堆)

最小堆及其应用&#xff1a;时间堆 最小堆及其应用&#xff1a;时间堆 一、 堆1. 概念2. 最小堆的实现3. 性质4. 代码 二、时间堆1. 概念简述2. 实现细节3. 代码 一、 堆 1. 概念 堆是一种经过排序的完全二叉树&#xff0c;其中任一非终端节点的数据值均不大于&#xff08;或…

【操作系统】生产者消费者问题

生产者消费者模型 文章目录生产者消费者模型 [toc]一、 生产者消费者问题二、 问题分析三、 伪代码实现四、代码实现&#xff08;C&#xff09;五、 互斥锁与条件变量的使用比较一、 生产者消费者问题 生产者消费者问题&#xff08;英语&#xff1a;Producer-consumer problem&…

【计算机网络】三次握手与四次挥手

三次握手与四次挥手 通过TCP/IP协议的学习&#xff0c;我们可以知道TCP协议是一种面向连接的、可靠的传输协议。其中&#xff0c;为了保证客户端与服务器连接的有效性&#xff0c;就有了本篇文章所要介绍的“三次挥手”&#xff1b;而“四次挥手”则是为了保证连接的正确断开。…

小叔叔又飞走了

小叔叔在飞走之前&#xff0c;昨天晚上&#xff0c;给我们看了&#xff0c;他回老家拍下的&#xff0c;家里每个人的视频&#xff0c;&#xff08;前面这半句话说得好累&#xff0c;不过应该不是病句&#xff09;让我们看了动情又亲切&#xff0c;至少我是这么觉得。一个大家庭…

系统调用中断(EINTR)与SIGCHLD信号的处理

一、被中断的系统调用(EINTR)的理解1. 慢系统调用是&#xff1f;2. 慢系统调用的类别3. EINTR产生的原因5. 一般处理方法 二、SIGCHLD信号的处理1. SIGCHLD信号的产生2. SIGCHLD信号的处理3. 不处理SIGCHLD的后果 三、示例代码 一、被中断的系统调用(EINTR)的理解 1. 慢系…

SMO写的查看数据库信息的代码

要分析一个比较大的数据库&#xff0c;里面的表太多了&#xff0c;虽然是中文命名&#xff0c;但在2005的Management Studio中查看还是比较麻烦&#xff0c;比如&#xff0c;我想查看具有相同字段名称的表的情况就不好办。于是用SMO写了这个东东。代码比较乱&#xff0c;没有进…

win10宽带连接断网自动重连

文章目录1. 断开网络连接&#xff0c;重命名网络连接2. bat代码&#xff1a;检测到断线自动重连3. 设置开机自动执行3.1 方式一&#xff1a;任务计划程序3.2 方式二&#xff1a;用vbs代码开机运行bat1. 断开网络连接&#xff0c;重命名网络连接 中文名字可能出现远程访问错误 …

ubuntu20环境下使用DevStack安装Openstack-Wallaby(单节点、多节点)

文章目录一、单节点部署1. 环境准备1.1 镜像源1.2 pip源1.3 安装依赖包2. OpenStack安装 - wallaby2.1 添加stack用户2.2 设置代理2.3 下载devstack&#xff0c;使用-b指定版本2.4 进入devstack目录&#xff0c;编辑配置文件2.5 开始安装2.6 安装完成二、多节点部署1. 环境准备…

EMF的一些总结(2)——关于EMF的序列化

关于EMF的序列化对于EMF的序列化有几个比较重要的接口&#xff1a;Resource,ResourceSet,Resource.Factory,URIConverter。这些接口的主要作用就是保存模型到持久化存储介质&#xff0c;或者从持久化存储介质加载模型。1&#xff0e;关于URI&#xff08;Uniform Resource Ident…

单链表实例之学生系统

单链表实例之学生系统 #include<stdio.h> #include<stdlib.h>#define NAME_LEN 20typedef struct node {int number;char *name;struct node *next; } node_t;node_t *g_head; int add_stu() {node_t *new, *tmp;tmp g_head;char *name;new (node_t *)malloc(si…

公司培训文档-JavaScript[对象.属性]集锦

SCRIPT 标记 用于包含JavaScript代码. 属性 LANGUAGE 定义脚本语言 SRC 定义一个URL用以指定以.JS结尾的文件 windows对象 每个HTML文档的顶层对象. 属性 frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放. feames.length 子桢个数. self 当前窗口. parent …

查询分析器下如何备份数据库

查询分析器下如何备份数据库backupdatabasemsdb todiskd:\msdb.bakOK搞定转载于:https://www.cnblogs.com/CnKker/archive/2006/09/26/515318.html

Inside Dynamics Axapta源代码赏析(四)

第八章:Developing Applications Using Business Connector 这一章的代码主要演示如何通过Business Connector与Axapta交互在Dynamics Axapta的客户端安装目录中找到Microsoft.Dynamics.BusinessConnectorNet.dll这个文件,添加到VS.NET的工程中.1.HelloWorldBC.csclassHelloWor…

信号之函数的可重入性

信号之函数的可重入性 在调用某个函数过程中出现中断信号&#xff0c;且改信号处理函数中再次调用该函数&#xff0c;访问全局、静态变量的函数是不可重入函数。 前后数据不一致&#xff0c;函数是不可重入的&#xff0c;特点&#xff1a;函数中使用全局变量或静态变量。 前后数…

ASP.NET 中处理页面“回退”的方法

我们在编写基于 ASP.NET 的应用程序时&#xff0c;如果代码执行出错或检测到异常&#xff0c;一般会提示用户“返回”或“回退”&#xff0c;或者在多步操作、列表/详细的查看界面中&#xff0c;也会给用户提供回退到上一页面的链接&#xff0c;对于这种情况&#xff0c;大家很…

编辑器

1.FCKeditor 编辑器 FCKeditor is compatible with most internet browsers which include: IE 5.5 (Windows), Firefox 1.0, Mozilla 1.3 and Netscape 7. 最新版本:FCKeditor 2.0 语言环境:多国语言特性功能:所见所得,支持平台众多,支持XHTML 1.0,文本格式设置,常见的编辑,复…

VSTO---excel编程 [待续] [12月5日更新,详见文档下面]

最近比较闲了&#xff0c;考试也快要到了。但是编程技术方面还是不能掉啊.现在开始VSTO编程之旅了。这个话题是连Blog的。所以有兴趣的Blog之友&#xff0c;技术之士&#xff0c;可以匿名或者非匿名的评论&#xff0c;交流。对了&#xff0c;下面的代码都是本人写的&#xff0c…

Rose与PowerDesigner:两款建模工具对比分析比较

一、 二者的出身 作为世界最著名的两大CASE工具&#xff0c;Rational Rose和PowerDesigner的名声可谓如雷贯耳。Rose是当时全球最大的CASE工具提供商Rational的拳头产品&#xff0c;UML建模语言就是由Rational公司的三位巨头Booch、Rumbaugh和Jacobson发明的&#xff0c;后来R…

c#活动目录操作

添加引用 System.DirectoryServices导入命名空间 using System.DirectoryServices;srvip "192.168.1.1"; dn "DCl,DCcom";user "administrator"; pwd "123"; DirectoryEntry de;denewDirectoryEntry("LDAP://"srvip &quo…

[导入]Ajax使用初步

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/19/1534299.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/20/816309.html