zoukankan      html  css  js  c++  java
  • 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];

            }

  • 相关阅读:
    期待已久的Ext JS 4.0正式版发布了
    数学学科读到硕士也只是学了皮毛
    数据库迁移
    ExtJS 4正式版今天发布
    BizTalk Server 2010 支持 SFTP 适配器
    MySQL大小写问题
    V$SESSION_LONGOPS
    利用Ganymed SSH2模拟SSH操作
    [Linux] 访问Samba提示“Network path was not found”
    Oracle段高水位(HWM, high water mark)问题
  • 原文地址:https://www.cnblogs.com/jietian331/p/3005766.html
Copyright © 2011-2022 走看看