在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
之前做的是C#后台接收显示串口数据。主要数据如下图: 现在要将这些数据存入数据库,并且在后台上用表格显示,后续用曲线图表现出来。 第一步,我想着先连接好数据库和表格。采用按钮实现: private DataSet ds = new DataSet();//数据库操作 private void button4_Click(object sender, EventArgs e) { string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\\Users\\jiong\\Desktop\\BMS\\BMS\\BMS_data.accdb"; string sql = "select * from 博达电池数据表"; OleDbConnection connection = new OleDbConnection(connectionString); OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, connection); dataAdapter.Fill(ds); dataGridView1.DataSource = ds.Tables[0].DefaultView; dataGridView1.AllowUserToAddRows = false; } 第二步,将textbox中的数据存入数据库的对应表格中。 首先应熟悉C#数据库操作 操作涉及的主要C#类有:
DataSet:对应数据库表的一个集合,实际上是数据库表在内存中的一个缓存
DataTable:对应数据库表,是数据库表行的集合
DataRow:对应数据库表行
OleDbConnection:建立数据库连接
OleDbDataAdapter:由数据库生成DataSet,并负责DataSet与数据库的同步
OleDbCommandBuilder:生成更新数据库所需的指令
DataSet、DataTable、DataRow用于数据在缓存中的操作,这上面的操作只有更新到数据库中,修改结果才会被永久保存。OleDbConnection 是用OLEDB方法连接数据库所必需的。OleDbDataAdapter和OleDbCommandBuilder用来生成DataSet,完成数据库更新。与OleDbDataAdapter和OleDbCommandBuilder相对应,SqlDataAdapter和SqlCommandBuilder也可以完成用SQL语言为指令的数据库更新。
我Access数据库位置如第一步所示。数据库中有一张名为博达电池数据表的表格,表的结构如下: 日期获取(http://blog.163.com/ljq086@126/blog/static/549639712010112921658843/) DataRow drx = ds.Tables[0].NewRow(); //创建一条新记录行 试了一下这种方法,可以添加。不过我将它放在button4_Click函数中,结果是按一下button,刷新一下,重复显示了。如下所示: 按一下重新显示,而不是我想要的增加一条新的显示。分析之后发现是因为每次按下按钮后,都会重新绑定数据源进行显示。 所以更改思路:在Formload中进行数据源绑定,然后在接收处理串口数据时就将数据写入dataGridView1,这样来数据后就自动增加一行显示新数据。 OleDbConnection connection = new OleDbConnection(connectionString); OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, connection); dataAdapter.Fill(ds); dataGridView1.DataSource = ds.Tables[0].DefaultView; dataGridView1.AllowUserToAddRows = false;//通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。 //如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。 然后将按钮“显示表格”功能改为“保存数据”,将数据保存到数据库。 private void button4_Click(object sender, EventArgs e) { OleDbConnection connection = new OleDbConnection(connectionString); OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, connection); OleDbCommandBuilder cb = new OleDbCommandBuilder(dataAdapter); // 创建OleDbCommandBuilder对象cb用于更新OleDbDataAdapter对象da的Insert、Delete、Update指令 dataAdapter.UpdateCommand = cb.GetUpdateCommand(); //更新OleDbDataAdapter对象da的指令 dataAdapter.Update(ds); //更新数据库 //-------重新绑定dataGridView的数据源,以便重新显示------- //dataAdapter.Fill(ds); //DataTable tblAuthors1; //tblAuthors1 = ds.Tables["博达电池数据"]; //dataGridView1.DataSource = tblAuthors1; //dataAdapter.Update(ds); //更新数据库 //dataAdapter.Fill(ds); //dataGridView1.DataSource = ds.Tables[0].DefaultView; } 这样基本完成了数据库的搭建和显示。 |
请发表评论