希望大虾,菜鸟都发扬"我为人人,人人为我"的奉献精神,将自己的或者别人的代码贴出来(前提是精彩,实用,精炼)供大家鉴赏学习! 自己抛砖引玉先!  :)   (最后提醒一点,为了保证自己以后查找的方便,一定要贴代码,而不要是,up,学习,谢谢楼主....之类的话,希望大家认真遵守!)                             C#中通过查询结果进行分页(转载)通过查询结果进行分页就是以结果集的子集处理查询结果的过程,这样,每次返回给用户的只是当前页面的数据大小。DataAdapter对象通过重载Fill方法提供了返回当前页面数据的功能。然而,这种方法对大数据量的查询结果并不是最好的选择,这是因为:当DataAdapter用请求的结果填充DataTable或者DataSet时,数据库返回的资源仍是全部的查询结果,只是在返回时附加了额外的限定条件才返回了少量的记录集的。要使用Fill方法返回当前一页的记录,需要指定开始记录startRecord,和当前页的最大记录数maxRecords。using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;public class PagingSample: Form
{
  // Form 控件.
  Button prevBtn = new Button();
  Button nextBtn = new Button();  static DataGrid myGrid = new DataGrid();
  static Label pageLbl = new Label();  // 分页变量
  static int pageSize = 10;      // 要显示的页数
  static int totalPages = 0;      // 总页数
  static int currentPage = 0;      // 当前页
  static string firstVisibleCustomer = "";  // 当前页的第一条记录,用来进行移动“前一页”的定位。
  static string lastVisibleCustomer = "";    //当前页的最后条记录,用来进行移动“下一页”的定位。   // DataSet用来绑定到DataGrid.
  static DataTable custTable;  //初始化连接和DataAdapter.
  static SqlConnection nwindConn = new SqlConnection("Data Source=.;Integrated Security=SSPI;Initial Catalog=northwind");
  static SqlDataAdapter custDA = new SqlDataAdapter("", nwindConn);
  static SqlCommand selCmd = custDA.SelectCommand;  public static void GetData(string direction)
  {
    // 创建返回一页记录的SQL语句
    selCmd.Parameters.Clear();    switch (direction)
    {
      case "下一页":
        selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +
                      "WHERE CustomerID > @CustomerId ORDER BY CustomerID";
        selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = lastVisibleCustomer;
        break;
      case "前一页":
        selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +
                      "WHERE CustomerID < @CustomerId ORDER BY CustomerID DESC";
        selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = firstVisibleCustomer;
        break;
      default:
        selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers ORDER BY CustomerID";
        
        // 计算总页数
        SqlCommand totCMD = new SqlCommand("SELECT Count(*) FROM Customers", nwindConn);
        nwindConn.Open();
        int totalRecords = (int)totCMD.ExecuteScalar();
        nwindConn.Close();
        totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);        break;
    }    // 用查询结果填充临时表
    DataTable tmpTable = new DataTable("Customers");
    int recordsAffected = custDA.Fill(tmpTable);    // 如果表不存在,就创建
    if (custTable == null)
      custTable = tmpTable.Clone();    // 如果有记录返回,就刷新表
    if (recordsAffected > 0)
    {
      switch (direction)
      {
        case "下一页":
          currentPage++;
          break;
        case "上一页":
          currentPage--;
          break;
        default:
          currentPage = 1;
          break;
      }      pageLbl.Text = "第" + currentPage + "/ " + totalPages + "页";      // 清除行集,添加新记录
      custTable.Rows.Clear();      foreach (DataRow myRow in tmpTable.Rows)
        custTable.ImportRow(myRow);      // 保存first 和 last 关键值
      DataRow[] ordRows = custTable.Select("", "CustomerID ASC");
      firstVisibleCustomer = ordRows[0][0].ToString();
      lastVisibleCustomer = ordRows[custTable.Rows.Count - 1][0].ToString();
    }
  }  public PagingSample()
  {
    // 初始化控件并添加到Form
    this.ClientSize = new Size(360, 274);
    this.Text = "NorthWind 数据表";    myGrid.Location = new Point(10,10);
    myGrid.Size = new Size(340, 220);
    myGrid.AllowSorting = true;
    myGrid.CaptionText = "NorthWind 客户信息";
    myGrid.ReadOnly = true;
    myGrid.AllowNavigation = false;
    myGrid.PreferredColumnWidth = 150;    prevBtn.Text = "前一页";
    prevBtn.Size = new Size(60, 24);
    prevBtn.Location = new Point(50, 240);
    prevBtn.Click += new EventHandler(Prev_OnClick);    nextBtn.Text = "下一页";
    nextBtn.Size = new Size(60, 24);
    nextBtn.Location = new Point(120, 240);    pageLbl.Text = "没有记录返回";
    pageLbl.Size = new Size(130, 16);
    pageLbl.Location = new Point(200, 244);    this.Controls.Add(myGrid);
    this.Controls.Add(prevBtn);
    this.Controls.Add(nextBtn);
    this.Controls.Add(pageLbl);
    nextBtn.Click += new EventHandler(Next_OnClick);
    // 计算默认的第一页,并进行绑定
    GetData("Default");
    DataView custDV = new DataView(custTable, "", "CustomerID", DataViewRowState.CurrentRows);
    myGrid.SetDataBinding(custDV, "");
  }  public static void Prev_OnClick(object sender, EventArgs args)
  {
    GetData("前一页");
  }  public static void Next_OnClick(object sender, EventArgs args)
  {
    GetData("下一页");
  }
}public class Sample
{
  static void Main()
  {
    Application.Run(new PagingSample());
  }
}

解决方案 »

  1.   

    int Max(int a,int b)
    {
        return a>b?a:b; 
    }
      

  2.   

    Ilist lst=new Hashtable();
      

  3.   

    问题描述:我在编写一图书馆管理程序(前台)时,客户要求可以像超市购物般,先选入购物车(本程序中为-我的关注)中,最后统一处理,而不做处理退出后则无须任何记录。
    解决思路:参考了.net的例子PetShop后,决定选用Session变量存储对象实例的方式解决
    具体代码:
    1、数据处理基类
    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;
    using System.Diagnostics;
    using System.Collections;
    using System.ComponentModel;namespace library.Components
    {
    /// <summary>
    /// 所有数据处理的基类。
    /// </summary>
    public class Data
    {
    protected OleDbConnection conn;
    protected OleDbDataAdapter myAdapter;
    protected OleDbCommand myCommand;
    /// <summary>
    /// 建立数据库连接。
    /// </summary>
    protected void Open()
    {
    if (conn == null)
    {
    conn = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    conn.Open();
    }
    }
    /// <summary>
    /// 关闭数据库连接。
    /// </summary>
    protected void Close()
    {
    if (conn != null)
    conn.Close();
    }
    /// <summary>
    /// 释放连接资源。
    /// </summary>
    protected void Distroy()
    {
    if (conn != null)
    {
    // conn.Dispose();
    conn = null;
    }
    }
    }
    }
      

  4.   

    2、MyFocus类
    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;
    using System.Diagnostics;
    using System.Collections;
    using System.ComponentModel;
    using library.Components;namespace library.Components
    {
    /// <summary>
    /// myFocus 的摘要说明。
    /// </summary>
    public class myFocus : Data
    {
    private DataTable FocusTable;
    public myFocus()
    {
    if (FocusTable == null)
    {
    FocusTable = new DataTable();
    FocusTable.Columns.Add("REG_NUM");
    FocusTable.Columns.Add("NAME");
    FocusTable.Columns.Add("AUTHORS");
    FocusTable.Columns.Add("TYPE_NAME");
    FocusTable.Columns.Add("COUNT");
    FocusTable.Columns.Add("OUT_COUNT");
    }
    }
    /// <summary>
    /// 加入我的关注。
    /// </summary>
    /// <param name="regNum">书籍注册码。</param>
    public void AddItem(string regNum)
    {
    Open();
    DataRow newRow = FocusTable.NewRow();
    OleDbDataReader myReader = null;
    string sqlStr = "Select REG_NUM, NAME, AUTHORS, COUNT, OUT_COUNT, TYPE_NAME From V_STY_LIBRARY_BOOKS Where REG_NUM='"+regNum+"'"; myCommand = new OleDbCommand(sqlStr, conn);
    myReader = myCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    if (myReader.Read())
    {
    newRow["REG_NUM"] = myReader["REG_NUM"].ToString();
    newRow["NAME"] = myReader["NAME"].ToString();
    newRow["AUTHORS"] = myReader["AUTHORS"].ToString();
    newRow["TYPE_NAME"] = myReader["TYPE_NAME"].ToString();
    newRow["COUNT"] = myReader["COUNT"].ToString();
    newRow["OUT_COUNT"] = myReader["OUT_COUNT"].ToString();
    }
    FocusTable.Rows.Add(newRow); myReader.Close();
    Distroy();
    }
    /// <summary>
    /// 从我的关注中移除项目。
    /// </summary>
    /// <param name="regNum">书籍这册码。</param>
    public void RemoveItem(string regNum)
    {
    for (int i=0; i<FocusTable.Rows.Count; i++)
    {
    if (FocusTable.Rows[i]["REG_NUM"].ToString() == regNum)
    FocusTable.Rows.Remove(FocusTable.Rows[i]);
    }
    }
    /// <summary>
    /// 获得数据源即DataTable。
    /// </summary>
    /// <returns>FocusTable</returns>
    public DataTable getDataTable()
    {
        return this.FocusTable;
    }
    /// <summary>
    /// 获得我的关注中的记录数目。
    /// </summary>
    /// <returns>返回DataTable的行数。</returns>
    public int getFocusNum()
    {
    return FocusTable.Rows.Count;
    }
    }
    }
      

  5.   

    3、前台显示(用类的实例初始化Session变量,然后获得DATATABLE绑定到DataGrid)
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using library.Components.allUse;
    using library.Components;namespace library
    {
    /// <summary>
    /// MyAttention 的摘要说明。
    /// </summary>
    public class MyAttention : System.Web.UI.Page
    {
    protected myControl.myButton butDelete;
    protected System.Web.UI.WebControls.Button butAddCase;
    protected System.Web.UI.WebControls.Button butApply;
    protected System.Web.UI.WebControls.DataGrid ListView;

    private void Page_Load(object sender, System.EventArgs e)
    {
    if (!Page.IsPostBack)
    {
    //确定用户拥有关注集合。
    if (Session["myAttention"] == null)
    Session["myAttention"] = new myFocus();
    if (Request.QueryString["action"]=="purchaseItem")
    {
    myFocus tempFocus = (myFocus)Session["myAttention"];
    string regNum = Request.QueryString["regNum"];
    bool existFlag = true;
    show showMsg = new show();
    foreach (DataRow tempRow in tempFocus.getDataTable().Rows)
    {
    if (tempRow["REG_NUM"].ToString() == regNum)
    existFlag = false;
    }
    if (existFlag)
                            this.AddItem(regNum);
    else
    showMsg.showMessage(this.Response, "您选择的记录已存在!");
    }
    ShowAttention();
    }

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.ListView.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.ListView_PageIndexChanged);
    this.butDelete.Click += new System.EventHandler(this.butDelete_Click);
    this.butAddCase.Click += new System.EventHandler(this.butAddCase_Click);
    this.butApply.Click += new System.EventHandler(this.butApply_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion

    /// <summary>
    /// 将书籍加入我的关注。
    /// </summary>
    /// <param name="regNum">书籍注册码。</param>
    public void AddItem(string regNum)
    {
    myFocus tempFocus = (myFocus)Session["myAttention"];
    tempFocus.AddItem(regNum);

    }
    /// <summary>
    /// 绑定DataGrid以显示关注图书。
    /// </summary>
    public void ShowAttention()
    {
    myFocus focus = (myFocus)Session["myAttention"];
    ListView.DataSource = focus.getDataTable().DefaultView;
    ListView.DataBind();
    } private void butDelete_Click(object sender, System.EventArgs e)
    {
    myFocus focus = (myFocus)Session["myAttention"];
    foreach (DataGridItem dgi in ListView.Items)
    {
    CheckBox cb = (CheckBox)(dgi.Cells[5].Controls[1]);
    HtmlInputHidden hd = (HtmlInputHidden)(dgi.FindControl("hdRegNum"));
    if  (cb.Checked)
    focus.RemoveItem(hd.Value);
    }
    if (focus.getFocusNum() <= ListView.CurrentPageIndex * ListView.PageSize && focus.getFocusNum() > 0)
    {
    ListView.CurrentPageIndex--;
    }
    ShowAttention();
    } private void butAddCase_Click(object sender, System.EventArgs e)
    {
    myFocus focus = (myFocus)Session["myAttention"];
    Books books = new Books();
    show showMsg = new show();
    string cardID, message;
    int UpNum = 0;
    int checkNum = 0;
    int nuUpNum = 0;
    if (Session["UserID"] != null)
    {
    cardID = Session["UserID"].ToString();
    foreach (DataGridItem dgi in ListView.Items)
    {
    CheckBox cb = (CheckBox)(dgi.Cells[5].Controls[1]);
    HtmlInputHidden hd = (HtmlInputHidden)(dgi.FindControl("hdRegNum"));
    if  (cb.Checked)
    {
    if (books.AddBookToCase(cardID, hd.Value) != -1)
    {
    UpNum++;
    }
    checkNum++;
    }
    }
    if (UpNum == checkNum)
    {
    message = "共有"+UpNum.ToString()+"条记录加入收藏夹!";
    }
    else
    {
    nuUpNum = checkNum - UpNum;
    message = "共有"+UpNum.ToString()+"条记录加入收藏夹!"+"(其余"+nuUpNum.ToString()+"条已存在于您的收藏夹内)";
    }
    showMsg.showMessage(Response, message);
    }
    else
    {
    Response.Redirect("Login.aspx?tempUrl=MyAttention.aspx");
    }
    ShowAttention();
    }
    private void butApply_Click(object sender, System.EventArgs e)
    {
    myFocus focus = (myFocus)Session["myAttention"];
    Books books = new Books();
    Item item = new Item();
    show showMsg = new show();
    string cardID,isbn, message;
    int UpNum = 0;
    int checkNum = 0;
    int nuUpNum = 0;
    if (Session["UserID"] != null)
    {
    cardID = Session["UserID"].ToString();
    foreach (DataGridItem dgi in ListView.Items)
    {
    CheckBox cb = (CheckBox)(dgi.Cells[5].Controls[1]);
    HtmlInputHidden hd = (HtmlInputHidden)(dgi.FindControl("hdRegNum"));
    if  (cb.Checked)
    {
    if (books.CheckBookCount(hd.Value))
    {
    isbn = books.GetIsbn(hd.Value);
    if (item.AddApply(cardID, isbn) != -1)
    {
    UpNum++;
    }
    }
    checkNum++;
    }
    }
    if (UpNum == checkNum)
    {
    message = "共有"+UpNum.ToString()+"条申请发出!";
    }
    else
    {
    nuUpNum = checkNum - UpNum;
    message = "共有"+UpNum.ToString()+"条申请发出!"+"(其余"+nuUpNum.ToString()+"条记录的申请已存在或书籍以无库存)";
    }
    showMsg.showMessage(Response, message);
    }
    else
    {
    Response.Redirect("Login.aspx?tempUrl=MyAttention.aspx");
    }
    ShowAttention();
    } private void ListView_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    ListView.CurrentPageIndex = e.NewPageIndex;
    ShowAttention();
    }
    }
    }
      

  6.   

    /// <summary>
    /// 服务器端弹出alert对话框
    /// </summary>
    /// <param name="str_Message">提示信息,例子:"请输入您姓名!"</param>
    /// <param name="page">Page类</param>
    public void Alert(string str_Message,Page page)
    {
    if(!page.IsStartupScriptRegistered ("msgOnlyAlert"))
    {
    page.RegisterStartupScript("msgOnlyAlert","<script>alert('"+str_Message+"');</script>");
    }
    }
    /// <summary>
    /// 服务器端弹出alert对话框,并使控件获得焦点
    /// </summary>
    /// <param name="str_Ctl_Name">获得焦点控件Id值,比如:txt_Name</param>
    /// <param name="str_Message">提示信息,例子:"请输入您姓名!"</param>
    /// <param name="page">Page类</param>
    public void Alert(string str_Ctl_Name,string str_Message,Page page)
    {
    if(!page.IsStartupScriptRegistered ("msgAlertGetFocus"))
    {
    page.RegisterStartupScript("msgAlertGetFocus","<script>alert('"+str_Message+"');document.forms(0)."+str_Ctl_Name+".focus(); document.forms(0)."+str_Ctl_Name+".select();</script>");
    }
    }
    /// <summary>
    /// 服务器端弹出confirm对话框
    /// </summary>
    /// <param name="str_Message">提示信息,例子:"您是否确认删除!"</param>
    /// <param name="btn">隐藏Botton按钮Id值,比如:btn_Flow</param>
    /// <param name="page">Page类</param>
    public void Confirm(string str_Message,string btn,Page page)
    {
    if(!page.IsStartupScriptRegistered ("msgConfirmOK"))
    {
    page.RegisterStartupScript("msgConfirmOK","<script> if (confirm('"+str_Message+"')==true){document.forms(0)."+btn+".click();}</script>");
    }
    }
    // /// <summary>
    // /// 服务器端弹出confirm对话框,当点“取消”时执行按钮操作,点确定时继续执行
    // /// </summary>
    // /// <param name="str_Message">提示信息,例子:"您是否确认删除!"</param>
    // /// <param name="btn">隐藏Botton按钮Id值,比如:btn_Flow</param>
    // /// <param name="page">Page类</param>
    // public void CancelConfirm(string str_Message,string btn,Page page)
    // {
    // page.RegisterStartupScript("","<script> if (confirm('"+str_Message+"')==false){document.forms(0)."+btn+".click();}</script>");
    // }
    /// <summary>
    ///  服务器端弹出confirm对话框,询问用户准备转向那些操作,包括“确定”和“取消”时的操作
    /// </summary>
    /// <param name="str_Message">提示信息,比如:"成功增加数据,单击\"确定\"按钮填写流程,单击\"取消\"修改数据"</param>
    /// <param name="btn_Redirect_Flow">"确定"按钮id值</param>
    /// <param name="btn_Redirect_Self">"取消"按钮id值</param>
    /// <param name="page">Page类</param>
    public void Confirm(string str_Message,string btn_Redirect_Flow,string btn_Redirect_Self,Page page)
    {
    if(!page.IsStartupScriptRegistered ("msgConfirmOKCancel"))
    {
    page.RegisterStartupScript("msgConfirmOKCancel","<script> if (confirm('"+str_Message+"')==true){document.forms(0)."+btn_Redirect_Flow+".click();}else{document.forms(0)."+btn_Redirect_Self+".click();}</script>");
    }
    }
      

  7.   

    我是刚开始入门,所以现在是没能力发帖,但我以后一定会回报CSDN给了我们大家一起学习的机会,同时也很感激lingyun2003 (虚心求教)提出这么一个互相学习的点子,帖出自己的劳动成果,让人和你一起分享你的快乐吧。
      

  8.   

    贴个小的,获得本机的Mac地址:
    public static string GetMac()
    {
    System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration");
    System.Management.ManagementObjectCollection moc = mc.GetInstances();
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    foreach(ManagementObject mo in moc)
    {
    if((bool)mo["IPEnabled"] == true)
    sb.Append(mo["MacAddress"].ToString());
    mo.Dispose();
    }
    return(sb.ToString());
    }调用:Console.Write(ClassName.GetMac());
    结果:00:E0:4C:0D:01:73
      

  9.   

    DateTime t1 = new DateTime(2002,5,30);
    DateTime t2 = new DateTime(2002,5,23);
    TimeSpan diff=t1-t2;
    MessageBox.Show(diff.Days.ToString());
      

  10.   

    TO:ffb(项目急,顾不了结构的)
    说我们贴的是垃圾,那你到是贴点不垃圾的啊,鄙视!!!
      

  11.   

    用QQWry.Dat作数据源实现IP地址检索[C#] 
    http://www.cnblogs.com/rexsp/archive/2004/12/27/82740.html
      

  12.   

    一个数据连接与存储过程调用类
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.ComponentModel;
    using System.Collections;
    using System.Diagnostics;
    using System.Configuration;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace web.inc
    {
    /// <summary>
    /// Database 的摘要说明。
    /// </summary>
    public class Database: IDisposable 
    {
    public Database()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } private SqlConnection conn ;
    public int RunProc(string procName) 
    {
    SqlCommand cmd = CreateCommand(procName, null);
    cmd.ExecuteNonQuery();
    this.Close();
    return (int)cmd.Parameters["ReturnValue"].Value;

    } /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="procName">存储过程名称</param>
    /// <param name="prams">存储过程所需参数</param>
    /// <returns>返回存储过程返回值</returns>
    public int RunProc(string procName, SqlParameter[] prams) 
    {
    SqlCommand cmd = CreateCommand(procName, prams);
    cmd.ExecuteNonQuery();
    this.Close();
    return (int)cmd.Parameters["ReturnValue"].Value;

    } /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="procName">存储过程的名称</param>
    /// <param name="dataReader">返回存储过程返回值</param>
    public void RunProc(string procName, out SqlDataReader dataReader) 
    {
    SqlCommand cmd = CreateCommand(procName, null);
    dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    //return (int)cmd.Parameters["ReturnValue"].Value;
    } public SqlCommand RtnData(string procName)
    {
    SqlCommand cmd=  CreateCommand(procName, null);
    return cmd;
    } public SqlCommand RtnDataPar(string procName, SqlParameter[] prams) 
    {
    SqlCommand cmd = CreateCommand(procName, prams);
    return cmd;
    //dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    } /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="procName">存储过程的名称</param>
    /// <param name="prams">存储过程所需参数</param>
    /// <param name="dataReader">存储过程所需参数</param>
    public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader) 
    {
    SqlCommand cmd = CreateCommand(procName, prams);
    dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    //return (int)cmd.Parameters["ReturnValue"].Value;
    }

    /// <summary>
    /// 创建一个SqlCommand对象以此来执行存储过程
    /// </summary>
    /// <param name="procName">存储过程的名称</param>
    /// <param name="prams">存储过程所需参数</param>
    /// <returns>返回SqlCommand对象</returns>
    private SqlCommand CreateCommand(string procName, SqlParameter[] prams) 
    {
    // 确认打开连接
    Open();

    SqlCommand cmd = new SqlCommand(procName, conn);
    cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程
    if (prams != null) 
    {
    foreach (SqlParameter parameter in prams)
    cmd.Parameters.Add(parameter);
    }

    // 加入返回参数
    cmd.Parameters.Add(
    new SqlParameter("ReturnValue", SqlDbType.Int, 4,
    ParameterDirection.ReturnValue, false, 0, 0,
    string.Empty, DataRowVersion.Default, null)); return cmd;
    } /// <summary>
    /// 打开数据库连接.
    /// </summary>
    private void Open() 
    {
    // 打开数据库连接
    if (conn == null) 
    {
    conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    }
    if(conn.State ==System.Data.ConnectionState.Closed)
    {
    conn.Open();
    }
    } /// <summary>
    /// 关闭数据库连接
    /// </summary>
    public void Close() 
    {
    if (conn != null)
    conn.Close();
    } /// <summary>
    /// 释放资源
    /// </summary>
    public void Dispose() 
    {
    // 确认连接是否已经关闭
    if (conn != null) 
    {
    conn.Dispose();
    conn = null;
    }
    } /// <summary>
    /// 传入输入参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param></param>
    /// <param name="Size">参数大小</param>
    /// <param name="Value">参数值</param>
    /// <returns>新的 parameter 对象</returns>
    public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
    } /// <summary>
    /// 传入返回值参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <returns>新的 parameter 对象</returns>
    public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
    } /// <summary>
    /// 传入返回值参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <returns>新的 parameter 对象</returns>
    public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
    }

    /// <summary>
    /// 生成存储过程参数
    /// </summary>
    /// <param name="ParamName">存储过程名称</param>
    /// <param name="DbType">参数类型</param>
    /// <param name="Size">参数大小</param>
    /// <param name="Direction">参数方向</param>
    /// <param name="Value">参数值</param>
    /// <returns>新的 parameter 对象</returns>
    public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) 
    {
    SqlParameter param; if(Size > 0)
    param = new SqlParameter(ParamName, DbType, Size);
    else
    param = new SqlParameter(ParamName, DbType); param.Direction = Direction;
    if (!(Direction == ParameterDirection.Output && Value == null))
    param.Value = Value; return param;
    } }
    }
      

  13.   

    http://community.csdn.net/Expert/topic/3696/3696617.xml?temp=.1594049
    印尼亚齐省劫掠现象严重华人成为抢劫目标http://news.sina.com.cn/c/2005-01-03/18414704205s.shtml
    港报呼吁印尼当局制止歹徒趁乱抢掠华人恶行
      

  14.   

    实现呈现流格式图像的图像控件
    http://www.csharpproject.com/articles/aspnet/images_multimedia/SimImage.aspx
    单选按钮在DataGrid中的实现
    http://www.csharpproject.com/articles/aspnet/aspnet_controls/radiobutton_grid.aspx
     简单实现多选框下拉列表
    http://www.csharpproject.com/articles/aspnet/custom_controls/ComboCheckBoxList.aspx
    颜色选择列表的实现
    http://www.csharpproject.com/articles/winforms/combo_listboxes/ColorComboBox.aspx
     设计模式应用例子一则
    http://www.csharpproject.com/articles/winforms/general/rolepanel.aspx
      

  15.   

    http://www.csharpproject.com
    开源代码分享站
    当您注册后,您将可以投稿和阅读CSharpProject的文章,讨论CSharpProject的问题,并且可以免费下载CSharpProject的所有资源,以及获得参与CSharpProject开发的机会。相信不久的将来,这里将汇集全中国的.NET 技术精英。
      

  16.   

    http://community.csdn.net/Expert/topic/3189/3189567.xml?temp=3.393191E-02那些在这里回复垃圾帖子的人,向上面的Delphi板块的朋友好好学习学习!
      

  17.   

    \\一个数据库操作接口
    using System;
    using System.Data;      //使用DataTable
    using System.Data.OleDb;//使用ADO.NET
    using System.Data.SqlTypes;//使用SQL的类型/****************************************************************
     * 本类库提供ADO.NET的基本操作
     * 可以实现对数据库的select ,insert into ,update,delete,create table等操作
     * 本库中的接口 IJetsenDatabaseInterface 只针对一个数据库进行操作,不能跨数据库操作
     * 作者:周高敏
     * 日期:2005-1-13
     * 版权:共享
     * 版本:v1.0
     ***************************************************************/
    namespace DB_Interface
    {
    /// <summary>
    /// 数据库某种类型的数据的结构,
    /// 该类仅用于数据存储,不用于数据操作,
    /// 相当于 struct 
    /// </summary>
    public class DB_FieldData
    {
    /// <summary>
    /// 数据类型(数据库表字段的简化类型)
    /// </summary>
    public enum DATA_TYPE
    {
    /// <summary>
    /// 数字类型    ,对应的变量是 lData32 
    /// </summary>
    DB_DATA_LONG = 1  ,
    /// <summary>
    /// 时间类型    ,对应的变量是 tData 
    /// </summary>
    DB_DATA_DATE      ,
    /// <summary>
    /// 字符串类型  ,对应的变量是 sData 
    /// </summary>
    DB_DATA_STRING    ,
    /// <summary>
    /// 64位数字类型,对应的变量是 lData64 
    /// </summary>
    DB_DATA_LONGLONG   
    };//数据类型 /// <summary>
    /// 标识从数据库中读出的字段数据的类型
    /// </summary>
    public DATA_TYPE    type;   
    /// <summary>
    /// 表示小于等于32位的整型数据变量
    /// </summary>
    public SqlInt32     lData32;
    /// <summary>
    /// 表示时间数据变量
    /// </summary>
    public SqlDateTime  tData;  
    /// <summary>
    /// 表示字符串数据变量
    /// </summary>
    public SqlString    sData;    
    /// <summary>
    /// 表示 64 位的整型数据变量
    /// </summary>
    public SqlInt64     lData64;
    }//class DB_FieldData /// <summary>
    /// 数据库操作的接口创建工厂类
    /// </summary>
    public class JetsenDatabaseFactory
    {
    /// <summary>
    /// 获取数据库操作的接口
    /// </summary>
    /// <returns>返回一个新创建的数据库操作接口 IJetsenDatabaseInterface</returns>
    public IJetsenDatabaseInterface GetNewInstance()
    {
    return new DB_Application();
    }
    } /// <summary>
    /// 数据库操作的接口声明
    /// </summary>
    public interface IJetsenDatabaseInterface
    {
    /// <summary>
    /// 获取最后一次出错的字符串信息
    /// </summary>
    String theLastErrorString
    {
    get;
    } /// <summary>
    /// 打开数据库连接,
    /// 如果已经打开,则先关闭
    /// </summary>
    /// <param name="strConn">连接字符串 比如 ACCESS 的ADO连接字符串 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False"</param>
    /// <returns>0 失败 ; other 成功</returns>
    int Open(String strConn); /// <summary>
    /// 关闭数据库连接
    /// </summary>
    void Close(); /// <summary>
    /// 开始事务,
    /// 不支持欠套事务
    /// </summary>
    /// <returns>0 失败 ; other 成功</returns>
    int BeginTrans(); /// <summary>
    /// 提交事务
    /// </summary>
    /// <returns>0 失败 ; other 成功</returns>
    int CommitTrans(); /// <summary>
    /// 回滚事务
    /// </summary>
    void RollbackTrans(); /// <summary>
    /// 通过SQL查询,获取行集数据开始
    /// 只针对查询SQL
    /// </summary>
    /// <param name="strSql">输入,查询字符串</param>
    /// <returns>0 失败 ; 其他 成功</returns>
    int BeginGetCollect(String strSql); /// <summary>
    /// 获取行集数据结束
    /// </summary>
    void EndGetCollect(); /// <summary>
    /// 获取一条行集数据,并且移到下一条行集
    /// </summary>
    /// <param name="vFieldName">输出,用于获取该SQL查询获得的字段列表名</param>
    /// <param name="vRowSet">输出,获取到的行集数据</param>
    /// <returns>0 失败 ; 其他 表示字段的实际个数,注意:vFieldName的长度表示数据库表的字段的个数,两者不一定一致,比如表中有BLOB字段就不一致</returns>
    int NextGetCollect(out String[] vFieldName/*字段名称列表*/,out DB_FieldData[] vRowSet/*行集数据*/);


    /// <summary>
    /// 插入一条行集数据,
    /// 关键字由参数传入
    /// </summary>
    /// <param name="vTableName">数据库表名</param>
    /// <param name="vFieldName">字段名称列表</param>
    /// <param name="vRowSet">行集数据</param>
    /// <returns>0 失败 ; 其他 成功</returns>
    int InsertOneCollect(String vTableName/*数据库表名*/,ref String[] vFieldName/*字段名称列表*/,ref DB_FieldData[] vRowSet/*行集数据*/);
    /// <summary>
    /// 插入一条行集,关键字需要自动创建
    /// </summary>
    /// <param name="vTableName">数据库表名</param>
    /// <param name="vKeyIndex">关键字位置索引</param>
    /// <param name="vFieldName">字段名称列表</param>
    /// <param name="vRowSet">行集数据,引用类型,既是输入又是输出,输出时,关键字位置的值被更改</param>
    /// <returns>0 失败 ; 其他 成功</returns>
    int InsertOneCollect_AutoNewID(String vTableName/*数据库表名*/,uint vKeyIndex/*关键字位置索引*/,ref String[] vFieldName/*字段名称列表*/,ref DB_FieldData[] vRowSet/*行集数据*/);


    /// <summary>
    /// 更新一条行集数据,
    /// </summary>
    /// <param name="vTableName">数据库表名</param>
    /// <param name="vKeyIndex">关键字位置索引,负数表示不使用该索引</param>
    /// <param name="vKeyIndex2">关键字位置索引,负数表示不使用该索引</param>
    /// <param name="vKeyIndex3">关键字位置索引,负数表示不使用该索引</param>
    /// <param name="vFieldName">字段名称列表</param>
    /// <param name="vRowSet">行集数据</param>
    /// <returns>0 失败 ; 其他 成功</returns>
    int UpdateOneCollect(String vTableName/*数据库表名*/,int vKeyIndex/*关键字位置索引*/,int vKeyIndex2/*关键字位置索引*/,int vKeyIndex3/*关键字位置索引*/,ref String[] vFieldName/*字段名称列表*/,ref DB_FieldData[] vRowSet/*行集数据*/);

    /// <summary>
    /// 执行一个sql语句
    /// </summary>
    /// <param name="strSql">sql字符串</param>
    /// <returns>0 失败 ; 其他 成功</returns>
    int ExecuteSql(String strSql); }//end of IJetsenDatabaseInterface
      

  18.   


    /// <summary>
    /// 实现数据库的表操作
    /// 比如 select ,insert ,update ,delete 等
    /// </summary>
    internal class DB_Application : IJetsenDatabaseInterface
    {
    private OleDbConnection    m_OleDb;      //数据库连接实例
    private OleDbTransaction   m_OleTrans;   //数据库事务处理实例
    private OleDbDataReader    m_OleReader;  //一个SQL查询的实例
    private OleDbCommand       m_OleCommand; //一个SQL查询的执行实例
    private String             m_ErrorString;//程序调用最后一次发生异常的错误串

    /// <summary>
    /// 获取最后一次出错的字符串信息
    /// </summary>
    public String theLastErrorString
    {
    get
    {
    return m_ErrorString;
    }
    } /// <summary>
    /// 获取数据库连接实例
    /// </summary>
    public OleDbConnection OleConnectionInstance
    {
    get
    {
    return m_OleDb;
    }
    } /// <summary>
    /// <para>默认构造函数不打开数据库</para>
    /// <para>需要使用Open方法打开数据库才能进一步操作数据库</para>
    /// </summary>
    public DB_Application()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
       
    m_OleDb = new OleDbConnection();
    } /// <summary>
    /// 通过构造函数打开数据库
    /// </summary>
    /// <param name="strConn">ADO连接字符串 比如 ACCESS 连接字符串 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False"</param>
    public DB_Application(String strConn)
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
       
    try
    {
    m_OleDb = new OleDbConnection(strConn);//新建连接
    m_OleDb.Open();//打开数据库 }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:consructor:error:" + ee.Message;
    }
    } /// <summary>
    /// 打开数据库连接,
    /// 如果已经打开,则先关闭
    /// </summary>
    /// <param name="strConn">ADO连接字符串 比如 ACCESS 连接字符串 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False"</param>
    /// <returns>0 失败 ; other 成功</returns>
    public int Open(String strConn)
    {
    try
    {
    m_OleDb.Close();//关闭连接
    }
    catch
    {

    } try
    {
    m_OleDb = new OleDbConnection(strConn);//新建连接
    m_OleDb.Open();//打开数据库 return 1;
    }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:Open:error:" + ee.Message;
    return 0;
    } }
      

  19.   

    /// <summary>
    /// 重新打开数据库连接,
    /// 如果已经打开,则先关闭
    /// 注意:基于以前已经传入的ADO连接字符串重新打开
    /// </summary>
    /// <returns>0 失败 ; other 成功</returns>
    public int Reopen()
    {
    try
    {
    m_OleDb.Close();//关闭连接
    }
    catch
    {

    } try
    {
    m_OleDb.Open();//打开数据库 return 1;
    }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:Reopen:error:" + ee.Message;
    return 0;
    } } /// <summary>
    /// 关闭数据库连接
    /// </summary>
    public void Close()
    {
    try
    {
    m_OleDb.Close();//关闭连接
    }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:Close:error:" + ee.Message;
    }
    } /// <summary>
    /// 开始事务,
    /// 不支持欠套事务
    /// </summary>
    /// <returns>0 失败 ; other 成功</returns>
    public int BeginTrans()
    {
    try
    {
    m_OleTrans = m_OleDb.BeginTransaction();//开始事务
    }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:BeginTrans:error:" + ee.Message;
    return 0;
    } return 1;
    } /// <summary>
    /// 提交事务
    /// </summary>
    /// <returns>0 失败 ; other 成功</returns>
    public int CommitTrans()
    {
    try
    {
    m_OleTrans.Commit();//提交事务
    m_OleTrans = null;
    }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:CommitTrans:error:" + ee.Message;
    return 0;
    } return 1;
    } /// <summary>
    /// 回滚事务
    /// </summary>
    public void RollbackTrans()
    {
    try
    {
    m_OleTrans.Rollback();//回滚事务
    m_OleTrans = null;
    }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:RollbackTrans:error:" + ee.Message;
    } } /// <summary>
    /// 通过SQL查询,获取行集数据开始
    /// 只针对查询SQL
    /// </summary>
    /// <param name="strSql">输入,查询字符串</param>
    /// <returns>0 失败 ; 其他 成功</returns>
    public int BeginGetCollect(String strSql)
    {
    try
    {
    m_OleCommand = m_OleDb.CreateCommand();//创建一个执行对象用于执行sql查询
    m_OleCommand.CommandText  = strSql;
    m_OleCommand.Transaction  = m_OleTrans; m_OleReader        = m_OleCommand.ExecuteReader();//执行sql查询 }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:BeginGetCollect:error:" + ee.Message;
    return 0;
    }

    return 1;
    } /// <summary>
    /// 获取行集数据结束
    /// </summary>
    public void EndGetCollect()
    {
    try
    {
    m_OleReader.Close();
    m_OleReader = null;
    m_OleCommand = null; }
    catch(Exception ee)
    {
    m_ErrorString = "DB_Application:EndGetCollect:error:" + ee.Message;
    }
    }