具体请见下载文件:/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();
     }
    }
   }
  }

}

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

仿ISQL功能的实现,可以实现批处理功能相关推荐

  1. 新浪微博发布文章html,JS实现仿新浪微博发布内容为空时提示功能代码

    本文实例讲述了JS实现仿新浪微博发布内容为空时提示功能.分享给大家供大家参考.具体如下: 这里使用JavaScript模拟新浪微博的一个功能,在发布微博的内容为空时,文本框提醒用户这里没有输入内容,本 ...

  2. Arcpy基础入门-2、arcpy的批处理功能

    教程1中我们简单的说了arcpy的使用方法,这应该特符合中国的国情吧,先会用再说.我们这一节还是讲arcpy的使用.说一下arcpy的批处理功能. ArcGIS作为世界领先的平台GIS软件,其应用的广 ...

  3. android 仿QQ,微信群组里的@功能,支持@多人,并能一键删除,能获取上传对应的id(修改版)

    首先注明该文章是借签别人的博客,原文博文地址点击打开链接 android 仿QQ,微信群组里的@功能,支持@多人,并能一键删除,能获取上传对应的id 这个需求来源:本人做集成环信聊天时,项目需要@功能 ...

  4. coreldraw x4如何重叠图片_CorelDRAW X4批处理功能介绍 如何链接图片而不是嵌入图片...

    CorelDRAW X4批处理功能介绍 如何链接图片而不是嵌入图片 CorelDraw X4马上要出了2月12日 刚刚下载完13版,上网站下载补丁,发现X4版已经整装待发了,2月12日发行. - 晕? ...

  5. 第三课 go语言改到php仿优酷-阿里云视频上传功能

    第三课 go语言改到php仿优酷-阿里云视频上传功能 tags: Beego 慕课网 categories: go环境安装 Beego框架 阿里云 视频点播服务 文章目录 第三课 go语言改到php仿 ...

  6. WorkNC批处理功能使人机结合——批量计算工作目录应用

    WorkNC批处理功能可以让两个或多个工件排队计算.编程人员只要在下班前编好多个工件的刀路,使用WorkNC批处理功能,即可做到人机结合.编程人员下班后,电脑还可以继续加工进行计算,次日过来所有刀路都 ...

  7. 用php批处理图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  8. php curl post上传图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  9. jQuery仿excel表格实现单元格拆分合并功能

    用html的table来布局,定制html模板,调用pd4ml生成要打印的pdf,为了方便添加了一个合并拆分单元格的方法,合并单元格来源于网络,但是有问题自己进行了修改. 网上合并单元格源码如下: & ...

  10. 收藏功能_微信强大的收藏功能,你们用了吗?

    在中国说到即时聊天工具,就得说到微信和QQ了,他们都是腾讯旗下的产品,今天麦叔要和大家聊的是微信,去年官方数据显示微信用户已超过10亿,庞大用户群体在使用它,但它的一些功能并不是每个人都会知道,今天麦 ...

最新文章

  1. 拦截器获取不到sesssion作用域的值_ES6--块级作用域
  2. mysql 4.0 删除重复_mysql删除重复数据
  3. BugkuCTF-MISC题三色绘恋
  4. 企业私有云之rabbitmq高可用
  5. 深度:余额宝技术架构及演进
  6. 知识回顾之一:WEB编程语言发展回顾...
  7. 微信公众号服务器需要备案,微擎不备案可以用吗?微信公众号开发域名一定要备案吗?...
  8. win10服务器权限修改时间,Win10没有权限修改系统时间如何解决?
  9. 八边形Octagan类(接口) (5 分)
  10. 持有境外机动车驾驶证,是否可以在我国驾驶机动车?
  11. 社群公会GangSDK:程序员入行AI领域需要哪些技能?
  12. 基于java的药店管理系统
  13. jquery form表单提交成功,回调方法
  14. fastboot unlock手机步骤
  15. HDU5172-GTY‘s gay friends
  16. dede织梦CMS安装页面出现dir的通用安装教程
  17. 洛谷 P1443 马的遍历(BFS)
  18. windows安装并配置apache https 网站 发布企业级iOS APP(enterprise)
  19. 最新 2022百威英博AI面试真题题库
  20. 花花收纳app-个人物品收纳管理记录软件

热门文章

  1. Hadoop namenode启动瓶颈分析
  2. 初一计算机下册理论知识,初中信息技术七年级下册(第七版)
  3. matlab zeros初始化为0矩阵
  4. GIS开源库shapeLib的使用方法
  5. 测试电梯的测试用例_测试用例设计经典面试题
  6. tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )...
  7. linux unix域socket_Socket通信原理
  8. Java接口long类型精度丢失,解决前后端交互Long类型精度丢失问题
  9. 【APICloud系列|41】融云单聊及消息的处理的对接与实现
  10. 解决 invalid input detected at ‘^’ marker的问题