日期:2014-05-16 浏览次数:20465 次
本文主要讲诉在使用VS2012+SQL Server数据库做系统中,通常会遇到几个问题.使用dataGridView控件在修改、删除、插入数据后,怎样刷新数据显示操作后的结果.同时在对数据操作时通常会判断数据的主键是否存在或重复,判断外键是否重复,这几个问题我推荐使用函数的形式完成,同时推荐一个操作格式,下面将详细介绍.
如下图所示,在数据库中删除一个数据或插入一个数据,我们都希望能够在左边的dataGridView控件中显示操作后的内容,而使用dataGridView1.Refresh()刷新只是刷新页面重绘控件,没有从数据库里读取内容.所以我们需要重新绑定数据,点击按钮故障信息删除后,实现重新读取数据库的值,并显示在控件dataGridView中即可.而这里我采用自定义函数实现重新绑定数据.
代码如下:
public void ShowInfoQues() { //定义数据库连接语句:服务器=.(本地) 数据库名=a string consqlserver = "Data Source=.;Initial Catalog=a;Integrated Security=True;"; string sql = "select * from Question"; //定义SQL查询语句 DataSet ds = new DataSet(); //定义数据内存中缓存 SqlConnection con; //定义SQL Server连接对象 SqlDataAdapter da; //数据库命令和数据库连接 con = new SqlConnection(consqlserver); //定义SQL Server连接对象 da = new SqlDataAdapter(sql, con); //数据库命令和数据库连接 con.Open(); try { da.Fill(ds); //填充数据 dataGridView1.DataSource = ds.Tables[0]; //获取数据源赋值数据库控件 } catch (Exception msg) { MessageBox.Show(msg.Message); //异常处理 } finally { con.Close(); //关闭连接 con.Dispose(); //释放连接 da.Dispose(); //释放资源 } }
点击按钮"故障信息删除"后调用该函数ShowInfoQues()即可实现,通常填充数据中需要判断语句如下,如果插入到的结果存在时数据显示在dataGridView控件中,但这样会存在一个问题,当数据库中只存在一个数据时,删除该数据后表中为空就不会更新dataGridView,因为此时已经没有数据就不会执行dataGridView1.DataSource = ds.Tables[0].它会始终显示一行数据,除非在此载入该窗体,所以此时不需要下面判断:
if (ds.Tables[0].Rows.Count > 0) //判断是否符合条件的数据记录 { dataGridView1.DataSource = ds.Tables[0]; }
在上面代码函数ShowInfoQues()中我设置为public,因为在点击“故障信息导入”按钮,它会进入另外一个界面,在那个界面填写完要插入的数据后同时更新父窗口dataGridView控件中的数据,实现插入数据更新,其中子窗口中的构造函数将带参数,如下图所示是子界面的代码:
//父窗体custServ 父窗体中含函数ShowInfoQues() custServ cstemp = new custServ(); public custServInput(custServ cs) { InitializeComponent(); cstemp = cs; } //点击"确认添加"按钮实现满意度调查 private void button1_Click(object sender, EventArgs e) { ... //插入数据操作 cstemp.ShowInfoQues(); //父窗口刷新 this.Hide(); //隐藏窗体 }
父窗体中的代码如下:
//点击"故障信息录入"按钮 private void repInf_Click(object sender, EventArgs e) { custServInput cSI = new custServInput(this); cSI.Show(); }
在对数据库进行操作时,通常会遇到判断主键是否存在或是否重复的问题,或判断外键是否存在的问题,因为如果外键不存在是不能插入数据的.在判断主键与外键时,我们可以定义一个函数,通过调用这个函数进行判断.
//该函数用于判断表中Phoneid(手机序列号)是否存在 private bool IsPhoneIdentify() { string consqlserver = "Data Source=.;Initial Catalog=TeleMS;Integrated Security=True;"; string sql = "select * from Question where phoneid='" + textBox2.Text.Trim() + &quo