如何在前端界面操作数据表
一.DataGridView操作数据表
1.SqlDataAdapter类
属性:
Insertcommand:在 Sqlcommand 过程中使用 Update(DataTable),以在数据库中插入对应于 DataTable 中的新行的记录
Selectcommand:在 Sqlcommand 过程中使用的 Fill(DataTable),用来从数据库中为 DataTable 中的位置选择记录。
Updatecomm:在 Sqlcommand 过程中使用的 Update(DataTable),用于在数据库中更新对应于DataTable 中已修改行的记录。
2.SqlDataReader类
属性:
HasRows:获取一个值,该值指示 SqlDataReader 是否包含一行还是多行。如果 SqlDataReader 包含一行或多行,则为 true
;否则为 false
。
方法:
Close():关闭SqlDataReader对象。
Read():让 SqlDataReader前进到下一条记录。如果存在更多行,则为 true
;否则为 false
。
3.DataTable类
表示内存中数据的一个表
属性:
Columns:获取属于该表的列的集合。一个DataColumnCollection,包含该表的DataColumn 对象的集合。 如果 DataColumn 对象不存在,将返回空集合。
HasErrors:获取一个值,该值指示该表所属的 DataSet 的任何表的任何行中是否有错误。如果有错误,则为 true
;否则为 false
Rows:获取属于该表的行的集合。包含 DataColumnCollection 对象的 DataRow;否则为 null 值(如果不存在任何 DataRow 对象)。
方法:
Clear:清除所有数据的DataTable。
Clone:克隆 DataTable的结构,包括所有DataTable架构和约束。新的 DataTable,与当前 DataTable 具有相同架构。
二.截图和代码
代码:
private void JCXMchaxun_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //声明并实例化SQL连接; sqlConnection.ConnectionString = ConfigurationManager.ConnectionStrings["Sql"].ConnectionString; //配置管理器从配置文件读取连接字符串,并将之赋予SQL连接的连接字符串属性; SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令; sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接; sqlCommand.CommandText = "SELECT * FROM Jianchaxiangmu WHERE Jc_no=@Jc_no;"; //指定SQL命令的命令文本;该命令查询指定学生; sqlCommand.Parameters.AddWithValue("@Jc_no", "5436001"); //向SQL命令的参数集合添加参数的名称、值; sqlConnection.Open(); //将班级下拉框的值成员设为班级数据表的编号列; SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); //调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器; if (sqlDataReader.Read()) //若数据阅读器成功读取到下一条记录(首次查询则表示第一条记录); { this.Jc_no.Text = sqlDataReader["Jc_no"].ToString(); //在数据阅读器的索引器中指定列名,从而访问当前记录的指定列的值,并赋予相应控件; this.Jcys.Text = sqlDataReader["Jcys"].ToString(); this.Jc_date.Text = sqlDataReader["Jc_date"].ToString(); this.Jcjg.Text = sqlDataReader["Jcjg"].ToString(); this.Jc_con.Text = sqlDataReader["Jc_con"].ToString(); this.Yijiao.Checked = (bool)sqlDataReader["Jc_fee"]; this.Weijiao.Checked = !(bool)sqlDataReader["Jc_fee"]; this.Jcfx.Text = sqlDataReader["Jcfx"].ToString(); } sqlDataReader.Close(); } private void JCXMxiugai_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = ConfigurationManager.ConnectionStrings["Sql"].ConnectionString; SqlCommand sqlCommand = sqlConnection.CreateCommand(); sqlCommand.CommandText = "UPDATE Jianchaxiangmu" + " SET Jcys=@Jcys,Jc_date=@Jc_date,Jcjg=@Jcjg,Jc_con=@Jc_con,Jc_fee=@Jc_fee,Jcfx=@Jcfx" + " WHERE Jc_no=@Jc_no;"; sqlCommand.Parameters.AddWithValue("@Jcys", this.Jcys.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_date", this.Jc_date.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_fee", this.Yijiao.Checked); sqlCommand.Parameters.AddWithValue("@Jcjg", this.Jcjg.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_con", this.Jc_con.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jcfx", this.Jcfx.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_no", this.Jc_no.Text.Trim()); sqlConnection.Open(); int rowAffected = sqlCommand.ExecuteNonQuery(); sqlConnection.Close(); if (rowAffected == 1) { MessageBox.Show("修改成功。"); } else { MessageBox.Show("修改失败!"); } } private void CJXMqueding_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = ConfigurationManager.ConnectionStrings["Sql"].ConnectionString; SqlCommand sqlCommand = sqlConnection.CreateCommand(); sqlCommand.CommandText = "INSERT Jianchaxiangmu (Jcys,Jc_date,Jc_fee,Jcjg,Jc_con,Jcfx,Jc_no) VALUES(@Jcys,@Jc_date,@Jc_fee,@Jcjg,@Jc_con,@Jcfx,@Jc_no);"; sqlCommand.Parameters.AddWithValue("@Jcys", this.Jcys.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_date", this.Jc_date.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_fee", this.Yijiao.Checked); sqlCommand.Parameters.AddWithValue("@Jcjg", this.Jcjg.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_con", this.Jc_con.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jcfx", this.Jcfx.Text.Trim()); sqlCommand.Parameters.AddWithValue("@Jc_no", this.Jc_no.Text.Trim()); sqlConnection.Open(); int rowAffected = sqlCommand.ExecuteNonQuery(); sqlConnection.Close(); if (rowAffected == 1) { MessageBox.Show("添加成功。"); } else { MessageBox.Show("添加失败!"); } }
private void btn_Load_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //声明并实例化SQL连接; sqlConnection.ConnectionString = "Server=(local);Database=EduBaseDemo;Integrated Security=sspi"; //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证); SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令; SqlCommand sqlCommand2 = new SqlCommand(); //声明并实例化SQL命令; sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接; sqlCommand2.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接; sqlCommand.CommandText = "SELECT * FROM tb_Class;"; //指定SQL命令的命令文本;该命令查询所有班级,以用作下拉框数据源; sqlCommand2.CommandText = "SELECT * FROM tb_Student;"; //指定SQL命令的命令文本;该命令查询所有学生; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器; sqlDataAdapter.SelectCommand = sqlCommand; //将SQL数据适配器的查询命令属性指向SQL命令; DataTable classTable = new DataTable(); //声明并实例化数据表,用于保存所有班级,以用作下拉框数据源; SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter(); //声明并实例化SQL数据适配器; sqlDataAdapter2.SelectCommand = sqlCommand2; //将SQL数据适配器的查询命令属性指向SQL命令; DataTable studentTable = new DataTable(); //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源; sqlConnection.Open(); //打开SQL连接; sqlDataAdapter.Fill(classTable); //SQL数据适配器读取数据,并填充班级数据表; sqlDataAdapter2.Fill(studentTable); //SQL数据适配器读取数据,并填充学生数据表; sqlConnection.Close(); //关闭SQL连接; this.dgv_Score.Columns.Clear(); //数据网格视图的列集合清空; this.dgv_Score.DataSource = studentTable; //将数据网格视图的数据源设为学生数据表; this.dgv_Score.Columns["No"].HeaderText = "学号"; //将数据网格视图的指定列的表头文本设为中文; this.dgv_Score.Columns["Name"].HeaderText = "姓名"; this.dgv_Score.Columns["Gender"].HeaderText = "性别"; this.dgv_Score.Columns["BirthDate"].HeaderText = "生日"; this.dgv_Score.Columns["Speciality"].HeaderText = "特长"; this.dgv_Score.Columns["Photo"].HeaderText = "照片"; this.dgv_Score.Columns["ClassNo"].Visible = false; //将数据网格视图的指定列设为不可见; this.dgv_Score.Columns[this.dgv_Score.Columns.Count - 1].AutoSizeMode = //数据网格视图的最后一列的自动调整列宽模式设为填充(至数据网格视图右侧边缘); DataGridViewAutoSizeColumnMode.Fill; DataGridViewComboBoxColumn classColumn = new DataGridViewComboBoxColumn(); //声明并实例化数据网格视图下拉框列,用于设置学生的班级; classColumn.Name = "Class"; //设置下拉框列的名称; classColumn.HeaderText = "班级"; //设置下拉框列的表头文本; classColumn.DataSource = classTable; //设置下拉框列的数据源为班级数据表; classColumn.DisplayMember = "Name"; //设置下拉框列的显示成员为(班级数据表的)名称(列); classColumn.ValueMember = "No"; //设置下拉框列的值成员为(班级数据表的)编号(列); classColumn.DataPropertyName = "ClassNo"; //设置下拉框列的数据属性名称为(学生数据表的)班级编号(列); classColumn.DisplayIndex = 4; //设置下拉框列的显示顺序; classColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; //设置下拉框列的自动调整列宽模式为填充; this.dgv_Score.Columns.Add(classColumn); //将下拉框列加入数据网格视图的列集合; } /// <summary> /// 私有方法:点击更新按钮; /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Update_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //声明并实例化SQL连接; sqlConnection.ConnectionString = "Server=(local);Database=EduBase2015;Integrated Security=sspi"; //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证); SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令; sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接; sqlCommand.CommandText = //指定SQL命令的命令文本; "UPDATE tb_Student" + " SET Name=@Name,Gender=@Gender,BirthDate=@BirthDate,ClassNo=@ClassNo,Speciality=@Speciality" + " WHERE No=@No;"; sqlCommand.Parameters.Add("@Name",SqlDbType.VarChar,0,"Name"); //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名; sqlCommand.Parameters.Add("@Gender", SqlDbType.Bit, 0, "Gender"); sqlCommand.Parameters.Add("@BirthDate", SqlDbType.Date, 0, "BirthDate"); sqlCommand.Parameters.Add("@ClassNo", SqlDbType.Int, 0, "ClassNo"); sqlCommand.Parameters.Add("@Speciality", SqlDbType.VarChar, 0, "Speciality"); sqlCommand.Parameters.Add("@No", SqlDbType.Char, 10, "No"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令; sqlDataAdapter.UpdateCommand = sqlCommand; //将SQL数据适配器的更新命令属性指向SQL命令; DataTable studentTable = (DataTable)this.dgv_Score.DataSource; //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型; sqlConnection.Open(); //打开SQL连接; int rowAffected = sqlDataAdapter.Update(studentTable); //SQL数据适配器根据学生数据表提交更新,并返回受影响行数; sqlConnection.Close(); //关闭SQL连接; MessageBox.Show("更新" + rowAffected.ToString() + "行。"); //在消息框显示受影响行数; }