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>");
            }

        }

  • 相关阅读:
    Android Gradle Plugin指南(五)——Build Variants(构建变种版本号)
    文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets
    文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write
    嵌入式linux应用程序调试方法
    version control system:git/hg/subversion/cvs/clearcase/vss。software configruation management。代码集成CI:Cruisecontrol/hudson/buildbot
    最值得你所关注的10个C语言开源项目
    如何记录linux终端下的操作日志
    CentOS 5.5 虚拟机安装 VirtualBox 客户端增强功能
    sizeof, strlen区别
    C/C++嵌入式开发面试题
  • 原文地址:https://www.cnblogs.com/pyman/p/1284775.html
Copyright © 2011-2022 走看看