欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#结合数据库的数据采集器示例

程序员文章站 2024-02-20 22:59:28
本文所述为c#数据采集器,并结合有数据库操作,比较实用。读者可以进一步再完善一下写成一个更加成熟的数据采集程序。 具体功能代码如下: using system;...

本文所述为c#数据采集器,并结合有数据库操作,比较实用。读者可以进一步再完善一下写成一个更加成熟的数据采集程序。

具体功能代码如下:

using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
using system.data.sqlclient;
using system.io;
namespace collectionenginery
{
  public partial class form1 : form
  {
    public form1()
    {
      initializecomponent();
    }
    public static sqlconnection my_con; //定义一个sqlconnection类型的公共变量my_con,用于判断数据库是否连接成功
    public static string m_str_sqlcon = "data source=.;database=collectionenginery;user id=sa;pwd=";
    streamreader sreader;
    #region 建立数据库连接
    /// <summary>
    /// 建立数据库连接.
    /// </summary>
    /// <returns>返回sqlconnection对象</returns>
    public static sqlconnection getcon()
    {
      my_con = new sqlconnection(m_str_sqlcon);  //用sqlconnection对象与指定的数据库相连接
      my_con.open(); //打开数据库连接
      return my_con; //返回sqlconnection对象的信息
    }
    #endregion
    #region 创建dataset对象
    /// <summary>
    /// 创建一个dataset对象
    /// </summary>
    /// <param name="m_str_sqlstr">sql语句</param>
    /// <param name="m_str_table">表名</param>
    /// <returns>返回dataset对象</returns>
    public dataset getdataset(string sqlstr, string tablename)
    {
      getcon();  //打开与数据库的连接
      sqldataadapter sqlda = new sqldataadapter(sqlstr, my_con); //创建一个sqldataadapter对象,并获取指定数据表的信息
      dataset my_dataset = new dataset(); //创建dataset对象
      sqlda.fill(my_dataset, tablename); //通过sqldataadapter对象的fill()方法,将数据表信息添加到dataset对象中
      con_close();  //关闭数据库的连接
      return my_dataset; //返回dataset对象的信息
    }
    #endregion

    #region 关闭数据库连接
    /// <summary>
    /// 关闭于数据库的连接.
    /// </summary>
    public void con_close()
    {
      if (my_con.state == connectionstate.open)  //判断是否打开与数据库的连接
      {
        my_con.close();  //关闭数据库的连接
        my_con.dispose();  //释放my_con变量的所有空间
      }
    }
    #endregion

    private void form1_load(object sender, eventargs e)
    {
      dataset dataset = new dataset();
      dataset = getdataset("select * from tb_collection", "tb_collection");
      datagridview1.datasource = dataset.tables[0];
      datagridview1.columns[0].headertext = "编号";
      datagridview1.columns[0].width = 40;
      datagridview1.columns[1].headertext = "书名";
      datagridview1.columns[1].width = 140;
      datagridview1.columns[2].headertext = "条形码";
      datagridview1.columns[2].width = 80;
      datagridview1.columns[3].headertext = "累加值";
      datagridview1.columns[3].width = 80;
      datagridview1.columns[4].headertext = "总计";
      datagridview1.columns[4].width = 40;
    }
    private void button1_click(object sender, eventargs e)
    {
      string tem_str = "";//记录当前行
      string tem_code = "";//条形码号
      string tem_mark = "";//个数
      string tem_s=" ";
      streamreader var_sread = new streamreader(application.startuppath + "\\adddata.dat");//实例化streamreader,并打开指定的文件
      while (true)//读取dat文件中的所有行
      {
        tem_str = var_sread.readline();//记录dat文件指定行的数据
        tem_code = tem_str.substring(0, tem_str.indexof(convert.tochar(tem_s))).trim();//获取当前行的条形码
        tem_mark = tem_str.substring(tem_str.indexof(convert.tochar(tem_s)), tem_str.length - tem_str.indexof(convert.tochar(tem_s))-1).trim();//获取当前条形码的个数
        for (int i = 0; i < datagridview1.rowcount - 1; i++)//在datagridview1控件中查找相应的条形码
        {
          if (datagridview1.rows[i].cells[2].value.tostring().trim() == tem_code)//如查找到
          {
            datagridview1.rows[i].cells[3].value = tem_mark.tostring();//显示当前要添加的个数
            datagridview1.rows[i].cells[4].value = convert.toint32(datagridview1.rows[i].cells[4].value) + convert.toint32(tem_mark);//计算当前条形码的总数
          }
        }
        if (var_sread.endofstream)//如果查询到文件尾
          break;//退出循环
      }
      var_sread.close();//释放所有资源
    }
  }
}