zoukankan      html  css  js  c++  java
  • 20080905经典的DataReader对象解读+几种对数据库的操作的命令,20100111update read db example

      DataReader对象提供一个单向向前移动且只读的记录集合,可以读取由Command对象执行的命令所产生的数据,只能与Command对象一起使用。当Command对象执行SQL命令后,产生执行的数据,于是会自动产生DataReader对象,我们可以使用DataReader对象读取数据。操作方式是一次循序读取一条记录,只能读且结合Command对象操作。
        因DataReader对象会由Command对象执行时自动产生,所以只要声明一个变量接收,将DataReader对象传入Command对象的Execute()方法中,或是将SQL指令执行的结果赋值给Command对象的ExecuteReader()法即可。声明格式如下:
        Dim变量名称As oLEDBDataReader
        Command对象名称.Execute(DataReader对象名称) 或
        DataReader对象名称=Command对象名称.ExecuteReader()   譬如:      

     protected void Button3_Click(object sender, EventArgs e)
        {

             string sql;
            sql = "select * from file where id= 8 ";
            OleDbConnection Conn1 = dbcenter.Acc_Conn();
            Conn1.Open();

           OleDbCommand cmd= new OleDbCommand(sql, Conn1);//定义为可执行命令的对象
            OleDbDataReader reader= cmd.ExecuteReader();//
    定义为可执行命令下的可执行读对象,我这样理解的
            while (reader.Read())
            {
                Label2.Text = reader.GetValue(5).ToString ();
               }

            reader.Close();
            Conn.Close();

    }

    编译运行调试通过,结果,当然就出来我想要的结果,该行第6列的值了。他把值从数据库中读出来,这样应用就广泛极了,可以和很多控件结合实现功能,如图片显示,把路径输出.当然之前要数据入库了,显示语句如:

    Image1.ImageUrl = "upfile/" + reader.GetValue(4).ToString()+"/"+"1.jpg" 或者

    reader.GetValue(reader .GetOrdinal ("date_year")).ToString() 其实文件名也可以在数据库中读出.

    reader.GetValue(reader .GetOrdinal ("date_year")).ToString() 是类似嵌套读取出数据库中date_year字段的值

    哈哈,以前该单元认识很模糊,现在算明白了。

    附说明:(转贴教材)

    DataReader对象的属性说明:

     
    RowFetchCount    设置取回的记录数,默认值为1笔
    Item DataReader   集合对象,可利用索引值取得各字段中的数据
    IsClosed DataReader    对象是否关闭
    HasMoreRows    未读取的数据
    HasMoreResults    是否有多项结果
    FieldCount    数据记录的字段数(只读)


    Item属性可以读取字段值,利用索引值读取。格式如下:

        DataReader对象名称.Item(索引值)
        其中索引值可以使用“字段顺序数字”,自0起算,第一个字段索引值为0,第二个字段索引值为1,依此类推;也可以使用“字段名称”。


    DataReader对象的方法说明:

     


    Read    读取下一条记录,有记录返回Tme,没有记录则返回False
    NextResult    取得下一个结果
    IsNull(i)    判断字段中是否为Null值(i为宁段编号)
    GetValues    取得所有字段值
    GetValue    取得赋值字段值
    GetOrdinal(字段名)    取得赋值字段名称的顺序
    getName(i)    取得赋值字段名称(i为字段编号)
    GetDataTypeName(i)    取得赋值字段的数据类型(i为字段编号)
    Close    关闭DataReader对象


    ·  Read方法
        此方法可使:DataReader对象读取数据,一次读取一条,若读取成功,中国自学编程网首发,http://www.zxbc.cn/"/",则返回True,若无数据或读取失败,则返回False。一般可以结合一个循环来读取数据,范例如下:
        do while dre.Read()
        loop


    ·  GetName方法
        此方法可以读取字段名称,格式如下:
    Data:Reader对象名称.GetName(字段索引值)
        其中字段索引值可代表字段顺序,第一个字段索引值为0,第二个字段索引值为1,依此类推。


    ·  GetlDataTypeName方法
        此方法可取得字段的数据类型,格式如下:
    Data.Reader对象名称.GetDataTypeName(宁段索引值)[Page]


    ·  Getordinal方法
        此方法可以取得字段名称对应字段顺序编号,格式如下:
        Data.Reader对象名称.Getordinal(字段名称)

    ·  GetValue方法
        此方法可以取得字段值,与Item属性相同,但只能接受索引值为字段顺序编号。格式如下:
        DataReader对象名称.GetValue(索引值)


    ·  GetValues方法
        此方法可以取得所有的字段值,通常可声明一个数组放入所有的字段。格式如下:
        Dim数组名(DataReader对象名称.FieldCount)
        DataReader对象名称.GetValues(数组名)


    ·  IsNull方法
        此方法判断字段的内容是否为空数据,是则返回True,不是则返回False,格式如下:
        DataReader对象名称.IsNull(字段索引值)

    using System.库

    OleDbCommand cmd= new OleDbCommand(sql, Conn1);//定义为可执行命令的对象
    OleDbDataReader reader= cmd.ExecuteReader();//
    定义为可执行命令下的可执行读对象,我这样理解的
            while (reader.Read())
            { 

           Label2.Text = reader.GetValue(5).ToString ();
               }
     

    reader.Close();从以上知道,可以这样操作数据库

    1、string sql_menu_1 = "update table set menu1='"+TextBox[i-1].Text +"'where id="+i;
                    OleDbCommand cmd = new OleDbCommand(sql_menu_1 ,conn );
                    cmd.ExecuteNonQuery();

    2、OleDbCommand cmd = conn.CreateCommand();
        cmd.CommandText =  "update table set menu7='" + TextBox[i - 1].Text + "'where id=" + i;
        cmd.ExecuteNonQuery();

    3、

    又例如:  conn.open();
               string sql = "select * from site_inf_xxx";
                OleDbCommand cmd = new OleDbCommand(sql, conn);//定义为可执行命令的对象
                OleDbDataReader reader = cmd.ExecuteReader();
                if (reader.Read ())
                {
                    site_name = reader["site_name"].ToString(); //获得想要的数据值
                    site_logo = reader["site_logo"].ToString();
                    site_picture = reader["site_picture"].ToString();
                    school_pic_type = site_picture.Substring(site_picture.LastIndexOf(".") + 1);//获得图片类型是jpg or swf
                }
                reader.Close();
                 conn.Close(); 

    看一个例子,读取数据库,用户和密码,登陆

    protected void Button1_Click(object sender, EventArgs e)
        {
            db d1 = new db();
            string path = d1.accessdb2();
            conn = new OleDbConnection(path);
            conn.Open();
            string sql = "select admin_name,admin_password from admin ";
            string pass_name = null;
            string pass_word = null;
            OleDbCommand comm = new OleDbCommand(sql, conn);
            OleDbDataReader odr = comm.ExecuteReader();
            while (odr.Read())
            {
                //pass_word = string.Format("{0}", odr[0]); 原读法
                pass_name = odr.GetValue(odr.GetOrdinal("admin_name")).ToString();
                pass_word = odr.GetValue(odr.GetOrdinal("admin_password")).ToString();      
            }
            odr.Close();
            conn.Close();

            if (name.Value ==pass_name && password.Value == pass_word)
            {
                Session["admin"] = "adminlogin";
                Response.Redirect("index.aspx");
            }
            else
            {
                Response.Write("<script>alert('用户名或密码错误')</script>");
            }

        }

  • 相关阅读:
    CStrFun
    CUrl
    CCrawl
    CHttp
    类的实例化
    #include文件时用双引号和尖括号的区别
    对于给定的若干个整数,要求计算它们的和!
    汉诺塔问题
    随机数的生成代码
    排列组合C++
  • 原文地址:https://www.cnblogs.com/pyman/p/1284775.html
Copyright © 2011-2022 走看看