一、插入登录框中用户输入的动态数据
1 /// <summary> 2 /// 添加数据 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void btnConnectDB_Click(object sender, EventArgs e) 7 { 8 //得到文本框的值 9 string classname = this.textClassName.Text; 10 string byname = this.textByName.Text; 11 //连接数据库 12 string connectString = "server=.;database=StudentMISDB;uid=sa;pwd=123456"; 13 //创建数据库命令 14 SqlConnection conn = new SqlConnection(connectString); 15 //打开数据库 16 conn.Open(); 17 //插入数据 18 string sql = string.Format("insert into Course values('{0}','{1}')",classname,byname); 19 //进行连接 20 SqlCommand cmd = new SqlCommand(sql,conn); 21 int count = cmd.ExecuteNonQuery(); 22 conn.Close(); 23 if(count>0){ 24 MessageBox.Show("插入成功"); 25 } 26 else 27 { 28 MessageBox.Show("插入失败"); 29 } 30 //conn.Close(); 31 }
二、修改数据库中的数据
1 /// <summary> 2 /// 修改数据 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void btnUpDateDB_Click(object sender, EventArgs e) 7 { 8 //获取输入框文本值 9 string className = this.textClassName.Text; 10 string byName = this.textByName.Text; 11 //创建数据库连接字符 12 string connectstring = "server=.;database=StudentMISDB;uid=sa;pwd=123456"; 13 //创建数据库连接对象 14 SqlConnection con = new SqlConnection(connectstring); 15 //打开数据库 16 con.Open(); 17 //创建数据库要执行的代码 18 string sql = string.Format("update Course set Name='{0}',ByName='{1}' where CourseId=2",className,byName); 19 //创建数据库命令的对象 20 SqlCommand cmd=new SqlCommand(sql,con); 21 int count = cmd.ExecuteNonQuery();//返回影响的行数 22 //关闭数据库 23 con.Close(); 24 //MessageBox.Show("好了"); 25 if (count > 0) 26 { 27 MessageBox.Show("修改成功"); 28 } 29 else 30 { 31 MessageBox.Show("修改失败"); 32 } 33 }
三、连接式查询数据库数据,并在listbox中展示出来
1 private void btnChaXun_Click(object sender, EventArgs e) 2 { 3 //创建数据库链接字符串 4 string connstring = "server=.;database=StudentMISDB;uid=sa;pwd=123456"; 5 //链接数据库 6 SqlConnection conn = new SqlConnection(connstring); 7 conn.Open(); 8 //数据库要执行的语句 9 string sql = "select * from Course where CourseID>3"; 10 //要执行的命令 11 SqlCommand cmd = new SqlCommand(sql,conn); 12 //读取数据 13 SqlDataReader reader = cmd.ExecuteReader(); //读取数据 14 //循环读取 15 while (reader.Read()) //表示前进到下一行记录,返回值为布尔类型,如果下一条有数据,返回true,没有数据,就返回false 16 { 17 //将读取到的数据添加到listbox中显示 18 this.listBoxChaxun.Items.Add(reader[0].ToString()+" "+reader[1].ToString() + " " + reader[2].ToString()); //分别读取第一列、第二列、第三列 19 } 20 //关闭读取 21 reader.Close(); 22 //关闭数据库 23 conn.Close(); 24 }
四、断开式查询数据
1 private void btnDKcheck_Click(object sender, EventArgs e) 2 { 3 string connString = "server=.;database=StudentMISDB;uid=sa;pwd=123456"; //创建数据库连接字符串 4 SqlConnection conn = new SqlConnection(connString); //创建连接对象 5 string sql = "select * from Course"; //数据库要执行的操作 6 //创建断开式连接对象 7 SqlDataAdapter adapter = new SqlDataAdapter(sql,conn); 8 //创建数据集对象 9 DataSet ds = new DataSet(); 10 //填充数据集 11 adapter.Fill(ds); 12 foreach (DataRow item in ds.Tables[0].Rows) //遍历输出值 13 { 14 listBoxChaxun.Items.Add(item[0].ToString()+" "+item[1].ToString()+" "+item[2].ToString()); 15 } 16 }
五、链接式查询和断开式查询方法的区别和总结
连接查询:
1.一直访问数据库,直到数据被读取完成才会终止;
2.执行效率非常高,从上到下依次读取,但是在之前读取过的数据,不能重新读取。
断开式查询:
1.通过SqlDataAdapter 把数据库中的数据,映射到 DataSet 中,但是对内存开支太大,执行效率也比较低;
2.比较灵活,可以根据不同的条件,对DataSet中的数据进行再次筛选;
3.对数据库中连接池中的资源的释放比较及时;
4.当 需要查询海量的数据时,必须要经过优化。【优化的方法:分页、存储过程分页】