书上记的比喻,有助于记忆。
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;
}
}
}
}