书上记的比喻,有助于记忆。
ADO.NET类
CONNECTION对象好比伸入水中的水龙头,保持与水的接触。只有它与水进行了连接,其它对象才可以抽到水。
COMMAND对象则像抽水机,为抽水提供动力和执行方法。先通过水龙头,然后把水返回给上面的水管。
DATAADAPTER,DATAREADER对象则像输水管,担任水的传输,并起来桥梁的作用。DATAAPATER输送到水库里保存,DATAREADER直接把水送到要水的用户和田地里。
DATASET对象则是一个大水库,把抽上来的水按一定关系的池子进行存放。即使摔掉抽水机,断开连接,也可以保存水的存在,这也正是ADO.NET的核心。
DATATABLE对象则像水库中每个独立的水池子,分别存放不同各类的水。一个大水加由一个或多个这样的水池子组成。
有点感觉了。
~~~~~~~~~~~~~~~~~~
接下来,要进行数据库的简单学习了。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsFormsApplication5 { public partial class Form1 : Form { SqlConnection conn; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "") { MessageBox.Show("Please input database name"); } else { try { string ConStr = "server = .; database= " + textBox1.Text.Trim() + "; uid = A; pwd = B"; conn = new SqlConnection(ConStr); conn.Open(); if (conn.State == ConnectionState.Open) richTextBox1.Text = "数据库[" + textBox1.Text.Trim() + "] 已经连接并打开."; } catch(Exception ex) { MessageBox.Show(ex.Message); textBox1.Text = ""; } } } private void button2_Click(object sender, EventArgs e) { try { string str = ""; conn.Close(); if (conn.State == ConnectionState.Closed) { str = "数据库已成功关闭\n"; } conn.Open(); if (conn.State == ConnectionState.Open) { str += "数据库已成功打开\n"; } richTextBox1.Text = str; } catch (Exception ex) { richTextBox1.Text = ex.Message; } } private void button3_Click(object sender, EventArgs e) { try { conn.Dispose(); conn.Open(); } catch (Exception ex) { richTextBox1.Text = ex.Message; } } } }