ADO.NET技术总结

一.简单SQL语句,如:

查询:select * from dbo.table_1 where Name=’Jim’

添加:insert into dbo.table_1(Name,Sex,Age) values(‘Jim’,’F’,18)

更新:update dbo.table_1 set Age=20 where Name=’Jim’

删除:delete from dbo.table_1 where Name=’Jim’

二.ADO.NET简介

数据库:水源

Connetcion对象:水龙头

Command对象:抽水机

DataAdapterDataReader对象:输水管

DataSet对象:大水库

DataTable对象:小池子

三.连接/关闭数据库:Connection对象

引用命名空间:using System.Data.SqlClient;

使用的类:SqlConnection

打开数据库方法:Open

关闭数据库方法:Close/Dispose,(Close只关闭连接,Dispose关闭连接且清理资源)

查看连接状态的属性:state(主要枚举值:ConnectionState.Closed/Open)

具体语句:

SqlConnection conn;

        privatevoid button1_Click(objectsender, EventArgs e)

        {

            if(this.textBox1.Text == "")

            {

                MessageBox.Show("请输入数据库名称。");

            }

            else

            {

                try

                {

                    stringConStr = "Data Source=SHADOW-PC\\SQLEXPRESS;InitialCatalog=" + this.textBox1.Text+";User ID=sa;Password=123;";

                    conn = new SqlConnection(ConStr);

                    conn.Open();    //打开数据库

                    if(conn.State == ConnectionState.Open)    //检查状态

                    {

                        this.label2.Text = "数据库【" + this.textBox1.Text.Trim()+ "】已成功打开";

                    }

                }

                catch

                {

                    MessageBox.Show("数据库连接失败!");

                }

            }

        }

 

        privatevoid button2_Click(objectsender, EventArgs e)

        {

            //conn.Close();    //关闭数据库

            conn.Dispose();    //关闭数据库并释放资源

            if(conn.State == ConnectionState.Closed)

            {

                this.label2.Text= "数据库已成功关闭。";

            }

        }

     说明,解决SQLServer 2008使用Windows验证的sa用户无法登陆的问题?

     第一步,以windows验证模式进入数据库管理器;

     第二步,右击sa,选择属性:在常规选项卡中,重新填写密码和确认密码(改成个好记的)。把强制实施密码策略去掉;

     第三步,点击状态选项卡:勾选授予和启用。然后确定;

     第四步,右击实例名称,选择属性;

     第五步,点安全性,确认选择了SQL SERVER Windows身份验证模式;

     第六步,重启SQLSERVER服务(重要)

四.执行SQL语句:Command对象

命名空间:System.Data.SqlClient

三个重要属性

Connection:设置要使用的SqlConnection

CommandText:设置SQL语句

CommandType:设置CommandText类型

三个重要方法

1)        ExecuteNonQuery:向数据库发送增、删、改命令,并返回受影响的行数如:

private voidbutton1_Click(object sender, EventArgs e)

        {

            conn = newSqlConnection("server=SHADOW-PC\\SQLEXPRESS;database=test;uid=sa;pwd=123");

            conn.Open();    //打开数据库

            SqlCommandcmd = new SqlCommand();

            //设置SqlCommand的三个重要的属性

            cmd.Connection = conn;

            cmd.CommandText="update dbo.Table_2 set Prize=50 where Sex='F'";

            cmd.CommandType=CommandType.Text;

            inti=Convert.ToInt32(cmd.ExecuteNonQuery());    //执行SQL语句并返回受影响的行数

            this.label1.Text="共有"+i.ToString()+"MM获取资金";

            conn.Dispose();  //关闭数据库

        }

 

2)        ExecuteReader:读取数据,并返回一SqlDataReader对象,如:

private void button2_Click(object sender, EventArgse)

        {

            conn = new SqlConnection("server=SHADOW-PC\\SQLEXPRESS;database=test;uid=sa;pwd=123");

           conn.Open();    //打开数据库

            SqlCommand cmd = newSqlCommand("select* from dbo.table_2 where sex='F'",conn);

            SqlDataReader sdr = cmd.ExecuteReader();    //执行查询,并返回一对象

            while (sdr.Read())   //调用Read方法,读取成功后返回true,否则返回false

            {

                this.listView1.Items.Add(sdr[0].ToString());    //sdr[i]表示索引值为i的列

            }

           sdr.Close();    //读取完后,关闭之以释放资源

            this.button2.Enabled = false;

           conn.Dispose();    //关闭数据库

        }

3)        ExecuteScalar:执行SQL语句,返回结果含有中的第一行第一列

五.数据库适配器:DataAdapter对象

DataSet与数据源之间的桥梁

4个属性SelectCommandDeleteCommandInsertCommandUpdateCommand

2个方法FillUpdate

1.        Fill方法填充DataSet数据集:

Fill方法使用Select语句从数据源中检索数据,Connction对象必须有效,但不需要将其打开,如:

private voidbutton3_Click(object sender, EventArgs e)

        {

            conn = newSqlConnection("server=SHADOW-PC\\SQLEXPRESS;database=test;uid=sa;pwd=123");

            SqlCommandcmd=new SqlCommand("select * from dbo.table_2",conn);

            SqlDataAdaptersda=new SqlDataAdapter();

            sda.SelectCommand=cmd;    //设置SelectCommand属性为cmd

            DataSetds=new DataSet();    //创建一DataSet对象

            sda.Fill(ds,"cs");    //Fill方法填充DataSet对象,且内存表名称为”cs”

            this.dataGridView1.DataSource=ds.Tables[0];

        }

2.        Update方法更新数据源

六.数据集:DataSet对象

DataSet数据来源于数据库或XML,要获取数据要使用DataAdapter来查询数据。

Merge方法合并DataSet内容,如:

        privatevoid Form1_Load(objectsender, EventArgs e)

        {           

            SqlConnectionconn = new SqlConnection("server=SHADOW-PC\\SQLEXPRESS;database=test;uid=sa;pwd=123");

            ds1 = newDataSet();

            ds2 = newDataSet();

            SqlDataAdaptersda1 = new SqlDataAdapter("select * from dbo.table_1", conn);

            SqlDataAdaptersda2 = new SqlDataAdapter("select * from dbo.table_2", conn);

            SqlCommandBuildersb1=new SqlCommandBuilder(sda2);    //来自动创建其它属性

            sda1.Fill(ds1);

            sda2.Fill(ds2);

            ds2.Merge(ds1, trueMissingSchemaAction.AddWithKey);    //ds1合并到ds2

            this.dataGridView1.DataSource= ds2.Tables[0];

        }

    说明:SqlCommandBuilde的作用:

1. 调用SqlDataAdapterUpdate方法将对DataSet的修改提交到数据库,Update方法有很多重载方法,可以提交整个DataSet,DataTable或者若干DataRow
2. 但是需要为SqlDataAdapter提供DeleteCommand,UpdateCommand,InsertCommand它才知道如何将对DataSet的修改提交到数据库;
3. 由于这几个Command要求的格式非常苛刻,因此开发人员自己写非常困难,可以用SqlCommandBuilder自动生成这几个Command;
用法很简单:new SqlCommandBuilder(adapter)
说明:SqlCommandBuilder要求必须有主键。

Copy方法复制DataSet内容,如:

private voidbutton1_Click(object sender, EventArgs e)

        {

            DataSetds3 = ds1.Copy();    //复制,返回一新的DataSet

            this.dataGridView2.DataSource= ds3.Tables[0];

        }

原文地址:https://www.cnblogs.com/jietian331/p/3005766.html