一、数据访问技术

访问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         }
ExcuteReader方法返回一个SqlDataReader对象

 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 }
填充DataSet数据集和更新数据源

 (2)使用SqlDataAdapter对象Update方法,可以将DataSet中修改过的数据及时地更新到数据库中。