这里主要是复习DataSet等数据或ADO.NET方面的知识。下面是一个简单的数据存储(在DataGridView上增加一行然后并存储到数据库的过程):
private void button1_Click(object sender, EventArgs e)
{
//插入一行内容
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=数据库名;User ID=sa;pwd=***");
con.Open();
SqlDataAdapter thisAdapter = new SqlDataAdapter("select itemId,productId,listPrice,unitCost,supplier,status,name,image from Item", con);
SqlCommandBuilder scb = new SqlCommandBuilder(thisAdapter);
DataSet ds = new DataSet();
thisAdapter.Fill(ds, "Item");
try
{
if (txtItemId.Text != "" && txtPicture.Text != "" && txtProductCount.Text != "" && txtProductId.Text != "" && txtProductName.Text != "" && txtProductPrice.Text != "" && txtYouhuiPrice.Text != "")
{
//TODO:判断txtitemid里的内容已经存在数据库(写个bool方法,然后再次判断调用即可)
DataRow newRow = ds.Tables["Item"].NewRow();
newRow["itemId"] = this.txtItemId.Text;
newRow["productId"] = this.txtProductId.Text;
newRow["listPrice"] = this.txtProductPrice.Text;
newRow["unitCost"] = this.txtYouhuiPrice.Text;
newRow["supplier"] = this.txtProductCount.Text;
newRow["status"] = this.comboSellMode.Text;
newRow["name"] = this.txtProductName.Text;
newRow["image"] = this.txtPicture.Text;
ds.Tables["Item"].Rows.Add(newRow);
thisAdapter.Update(ds, "Item");
}
//更新datagridview表格
//此处因为是绑定数据,不能用此句代码直接插入一行数据
//dataGridView1.Rows.Add(new object[] { txtItemId.Text, txtProductId.Text, txtProductPrice.Text, txtYouhuiPrice.Text, txtProductCount.Text, comboSellMode.Text, txtProductName.Text, txtPicture.Text });//{}是对应列的值
else
{
MessageBox.Show("请将信息填写完整,并符合规则!", "Message to you:", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("请检查信息输入格式!" + ex.Message, "Message to you,", MessageBoxButtons.OK, MessageBoxIcon.Error);
//这里有个bug,没有实现表的同步更新
}
}
一般关于使用DataSet的用法基本上都是一个模式,或者说数据连接这一块都是一个模式。
1. 首先就是SqlConnection 来new出来一个连接数据库的字符串;
2. 接着用DataAdapter对数据进行许多不同种类的操作,包括查询、更新和删除。它比DataReader对象更加通用一些;
3.然后并没有编写SQL语句来进行更新,而是创建了更简单实用的CommandBuilder对象,它可以为我们创建正确的SQL语句,然后并将其自动与DataAdaper相关联;
4.接下来就到了ado.net中重要的DataSet对象了,所有的复杂操作都会使用到它。它包含一组相关的DataTable对象,代表要使用的数据库表。每一个DataTable对象都有子DataRow和DataColumn对象,分别代表数据库表的行列。通过这些对象就可以获得表的所有元素;
5.然后就是DataAdapter的填充方法 :thisAdapter.Fill(ds, "Item");
6.最后要注意的是:数据库连接打开后,最后一定要关闭;对数据表操作后,一定要执行UpDate()方法,才能将修改保存到数据库;它隶属于DataAdapter。
上面六步基本就是各种套路的东西了,如果有对数据的操作,就可以把这些操作的语句放在填充之后,也就是Fill()方法之后,因为这些的更改只是停留在内存,需要最后执行DataAdapter的UpDate()方法才能最终得以更新到数据库中。
当这样的操作比较多的时候,就会发现很多方法的代码都是重复的,也就是上面那些套路。这个时候,我们就要用到面向对象了,也就是把这些相同的东西提取出来写成一个方法让大家共享,这就是一个面向对象或是不断重载等进行代码简化的过程,这就是真正严谨的开发的开始了吧。