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

    }

原文地址:https://www.cnblogs.com/pyman/p/1284775.html