在.NET中调用DataWindow操作数据库

来源:互联网 发布:linux退出vim命令 编辑:程序博客网 时间:2024/05/17 23:28

                          在.NET中调用DataWindow操作数据库

       Sybase在2004/1/19日推出了Pb 10 beta1版本,其中包含DataWindow.NET 1.0,这真是一个另人兴奋的消息! 在PB市场日益萎缩的今天,在.NET大行其道的今天Sybase公司终于推出了DataWindow.NET,它支持DataWindow绝大部份原有事件和属性,PB技术终于可以重新又派上用场了!!

  下过来安装程序,便急不可待的在VS.NET2003下面做了一个简单的例子,发现真的很好用!源代码、界面如下:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace cjgl.Report
{
 /// <summary>
 /// DataWindowTest 的摘要说明。
 /// </summary>
 public class DataWindowTest : System.Windows.Forms.Form
 {
  private Sybase.DataWindow.DataWindowControl dw;
  private Sybase.DataWindow.Transaction Trans;
  private System.Windows.Forms.Button btnRetrieve;
  private System.Windows.Forms.Button btnDelete;
  private System.Windows.Forms.Button btnInsert;
  private System.Windows.Forms.Button btnSave;
  private System.ComponentModel.IContainer components;

  public DataWindowTest()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();

   //
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //
   
   
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if(components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region Windows 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.components = new System.ComponentModel.Container();
   this.btnRetrieve = new System.Windows.Forms.Button();
   this.btnDelete = new System.Windows.Forms.Button();
   this.btnInsert = new System.Windows.Forms.Button();
   this.dw = new Sybase.DataWindow.DataWindowControl();
   this.Trans = new Sybase.DataWindow.Transaction(this.components);
   this.btnSave = new System.Windows.Forms.Button();
   this.SuspendLayout();
   //
   // btnRetrieve
   //
   this.btnRetrieve.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
   this.btnRetrieve.Location = new System.Drawing.Point(360, 297);
   this.btnRetrieve.Name = "btnRetrieve";
   this.btnRetrieve.TabIndex = 1;
   this.btnRetrieve.Text = "Retrieve";
   this.btnRetrieve.Click += new System.EventHandler(this.btnRetrieve_Click);
   //
   // btnDelete
   //
   this.btnDelete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
   this.btnDelete.Location = new System.Drawing.Point(260, 296);
   this.btnDelete.Name = "btnDelete";
   this.btnDelete.TabIndex = 2;
   this.btnDelete.Text = "Delete";
   this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
   //
   // btnInsert
   //
   this.btnInsert.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
   this.btnInsert.Location = new System.Drawing.Point(152, 295);
   this.btnInsert.Name = "btnInsert";
   this.btnInsert.TabIndex = 3;
   this.btnInsert.Text = "Insert";
   this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click);
   //
   // dw
   //
   this.dw.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    | System.Windows.Forms.AnchorStyles.Left)
    | System.Windows.Forms.AnchorStyles.Right)));
   this.dw.DataWindowObject = "dw_customer";
   this.dw.LibraryList = "D://Program Files//Sybase10//DataWindow Builder 1.0//dwb100.pbl";
   this.dw.Location = new System.Drawing.Point(5, 5);
   this.dw.Name = "dw";
   this.dw.ScrollBars = System.Windows.Forms.ScrollBars.Both;
   this.dw.Size = new System.Drawing.Size(432, 280);
   this.dw.TabIndex = 4;
   this.dw.Text = "dataWindowControl1";
   this.dw.TypeOfDataWindow = Sybase.DataWindow.DataWindowType.Grid;
   //
   // Trans
   //
   this.Trans.Database = "asademo9.dba";
   this.Trans.Dbms = Sybase.DataWindow.DbmsType.OleDb;
   this.Trans.DbParameter = "PROVIDER=/'ASAProv.90/'";
   this.Trans.Password = "sql";
   this.Trans.ServerName = "asademo9";
   this.Trans.UserID = "dba";
   //
   // btnSave
   //
   this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
   this.btnSave.Location = new System.Drawing.Point(46, 296);
   this.btnSave.Name = "btnSave";
   this.btnSave.TabIndex = 5;
   this.btnSave.Text = "&Save";
   this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
   //
   // DataWindowTest
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(444, 333);
   this.Controls.Add(this.btnSave);
   this.Controls.Add(this.dw);
   this.Controls.Add(this.btnInsert);
   this.Controls.Add(this.btnDelete);
   this.Controls.Add(this.btnRetrieve);
   this.Name = "DataWindowTest";
   this.Text = "利用DataWindow.NET设计";
   this.ResumeLayout(false);

  }
  #endregion

  private void btnRetrieve_Click(object sender, System.EventArgs e)
  {
   try
   {
    if ( !Trans.IsConnected)
    {
     Trans.Connect();
    }
    dw.SetTransObject(Trans);
    dw.Retrieve();

   }
   catch( Sybase.DataWindow.DbErrorException ee)
   {
    MessageBox.Show("数据库连接出错!"+ee.SqlErrorText);
    return;
   }
  }

  private void btnInsert_Click(object sender, System.EventArgs e)
  {
   //插入一行
   int insertRow = dw.InsertRow(0);
   dw.Scroll(insertRow);
   //赋初值
   dw.SetItemDouble(insertRow,"id",9999);
   dw.SetItemString(insertRow,"fName","Huang");
   dw.SetItemString(insertRow,"lName","Yong");
   dw.SetItemString(insertRow,"address","ChangSha");
   dw.SetItemString(insertRow,"city","ChangSha");
  }

  private void btnDelete_Click(object sender, System.EventArgs e)
  {
   dw.DeleteRow(dw.CurrentRow);
  }

  private void btnSave_Click(object sender, System.EventArgs e)
  {
   try
   {
    dw.Update();
    Trans.Commit();
   }
   catch (Sybase.DataWindow.DbErrorException ee)
   {
    MessageBox.Show("更新不成功!原因:"+ee.SqlErrorText);
    Trans.Rollback();
   }
   catch (Sybase.DataWindow.DataWindowNotCreatedException ee)
   {
    MessageBox.Show("数据窗口还没有创建!");
    Trans.Rollback();
   }
   catch(Sybase.DataWindow.MethodFailureException ee)
   {
    MessageBox.Show("更新不成功!原因:"+ee.Message.ToString());
    Trans.Rollback();
   }
  }

 }
}
     通过PB,或DataWindow Builder创建PBL库和DataWindow对象后,就像在PB中操作一样,指定PBL库位置和DataWindow控件相关连DataWindow对象,就可对DataWindow进行相关的操作如dw.SetTransObject(Trans);dw.Retrieve();怎么样?对原PB
程序员来说很熟悉吧!

  如果觉得不错,可以到陶清网站去下载PB10Bete1版本:) http://www.pdriver.com/display.asp?key_id=1563

 

原创粉丝点击