当前位置: 移动技术网 > IT编程>开发语言>c# > C#结合数据库的数据采集器示例

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文所述为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();//释放所有资源
    }
  }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网