C#结合数据库的数据采集器示例
程序员文章站
2023-12-18 16:20:22
本文所述为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();//释放所有资源 } } }