一、数据访问技术
访问SQL Server数据库:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.SqlClient; 10 11 namespace WFApp_Command 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 SqlConnection conn; 20 21 private void Form1_Load(object sender, EventArgs e) 22 { 23 string str = "server=summerflower;database=ADO_DB1;uid=sa;pwd="; 24 conn = new SqlConnection(str); 25 conn.Open();//打开连接 26 label2.Text = "数据库状态:" + conn.State.ToString(); 27 } 28 29 private void check_Click(object sender, EventArgs e) 30 { 31 try 32 { 33 if (conn.State==ConnectionState.Open && textBox1.Text!="") 34 { 35 SqlCommand cmd = new SqlCommand();//创建一个SqlCommand对象 36 cmd.Connection = conn;//设置Connection属性 37 string sql="select count(*) from " + textBox1.Text.Trim(); 38 //设置CommandText属性,设置sql语句 39 cmd.CommandText = sql; 40 //设置CommandType属性为Text,使其只执行sql语句文本形式 41 cmd.CommandType = CommandType.Text; 42 //使用ExecuteScalar方法获取指定数据表中的数据数量(记录条数) 43 int i = Convert.ToInt32(cmd.ExecuteScalar()); 44 label2.Text = "数据表[" + textBox1.Text.Trim() + "]中共有" + i.ToString() + "条数据"; 45 } 46 } 47 catch (System.Exception ex) 48 { 49 label2.Text=ex.Message; 50 } 51 52 } 53 } 54 }
1.使用ExecuteScalar方法获取指定数据表中的数据数量(记录条数)
ExecuteScalar方法:执行sql语句,返回结果集中第一行的第一列或者空引用(结果集为空),一般与sql语句的聚合函数一起使用。
int i = Convert.ToInt32(cmd.ExecuteScalar());
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.SqlClient; 10 11 namespace WFApp_Command 12 { 13 public partial class Form2 : Form 14 { 15 public Form2() 16 { 17 InitializeComponent(); 18 } 19 SqlConnection conn; 20 21 private void button1_Click(object sender, EventArgs e) 22 { 23 string str="server=summerflower;database=ADO_DB1;uid=sa;pwd="; 24 string sql = "update Table1 set score=88 where sex='女';";//要执行的sql语句 25 26 conn = new SqlConnection(str); 27 conn.Open(); 28 29 SqlCommand cmd=new SqlCommand(); 30 31 cmd.Connection = conn; //设置三个属性 32 cmd.CommandText = sql; 33 cmd.CommandType = CommandType.Text; 34 35 //使用ExecuteNonQuery方法执行语句,返回受影响的行数 36 int i = Convert.ToInt32(cmd.ExecuteNonQuery()); 37 38 richTextBox1.Text = i.ToString(); 39 } 40 } 41 }
2. 使用ExecuteNonQuery方法执行语句,返回受影响的行数
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
1 private void button2_Click(object sender, EventArgs e) 2 { 3 string str = "server=summerflower;database=ADO_DB1;uid=sa;pwd="; 4 string sql = "select * from Table1";//要执行sql语句 5 6 conn = new SqlConnection(str); 7 conn.Open(); 8 9 SqlCommand cmd = new SqlCommand(); 10 11 cmd.Connection = conn; 12 cmd.CommandText = sql; 13 cmd.CommandType = CommandType.Text; 14 15 //使用ExcuteReader方法实例化一个SqlDataReader对象 16 SqlDataReader sdr = cmd.ExecuteReader(); 17 18 //读取数据 19 while (sdr.Read()) 20 { 21 listView1.Items.Add(sdr[1].ToString()); 22 } 23 conn.Dispose(); 24 }
3. 使用ExcuteReader方法实例化一个SqlDataReader对象
SqlDataReader sdr = cmd.ExecuteReader();
SqlDataReader对象是using System.Data.SqlClient命名空间下的DataReader对象,用于数据读写。
4.数据适配器:DataAdapter对象
(1)使用SqlDataAdapter对象的Fill方法填充DataSet数据集,并关联DataGridView控件的数据源。
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.SqlClient; 10 11 namespace WFApp_Command 12 { 13 public partial class Form3 : Form 14 { 15 public Form3() 16 { 17 InitializeComponent(); 18 } 19 20 SqlConnection conn; 21 private void load_Click(object sender, EventArgs e) 22 { 23 string net = "server=summerflower;database=ADO_DB1;uid=sa;pwd="; 24 string sqlstr = "select * from Table1;"; 25 conn = new SqlConnection(net); 26 27 //创建一个SqlCommand对象 28 SqlCommand cmd = new SqlCommand(); 29 cmd.CommandText = sqlstr; 30 cmd.Connection = conn; 31 cmd.CommandType = CommandType.Text; 32 33 //创建一个SqlDataAdapter对象 34 SqlDataAdapter sda = new SqlDataAdapter(); 35 //设置SqlDataAdapter对象的SelectCommand属性为cmd 36 sda.SelectCommand = cmd; 37 //创建一个DataSet对象 38 DataSet ds = new DataSet(); 39 //使用SqlDataAdapter对象的Fill方法填充DataSet数据集 40 sda.Fill(ds); 41 42 //设置dataGridView控件的数据源 43 dataGridView1.DataSource = ds.Tables[0]; 44 } 45 } 46 }
(2)使用SqlDataAdapter对象Update方法,可以将DataSet中修改过的数据及时地更新到数据库中。