小弟初学,datatable和dataset还没有搞清楚,不知道datatable和dataset之间有什么从属的关系。
下面是个实例,望各大虾帮下忙~~小弟满分相送存在access数据库,数据库的images表名中有如下的列名及记录
ID     imagesPath
1      \images\picture\002.jpg
2      \images\picture\005.jpg
3      \images\picture\031.jpg
现在要做的就是如何利用datatable和dataset将这三张图片中的两张动态加载到两个picturebox中去,还望支招~~~~

解决方案 »

  1.   

    dataset可以包含datatable
    datatable只是一张表
    dataset是表的集合。
      

  2.   

    DataSet是多个DataTable的组
    可以通过数字或表名来索引DataTable
      

  3.   

        public int ORACLE(ref DataTable dt, string sQuery)
        {
            dt.Clear();
            try
            {
                string ORACLEConnectionString = ConfigurationSettings.AppSettings["ORACLEConnectionString"];
                OleDbConnection cn = new OleDbConnection(ORACLEConnectionString);
                cn.Open();
                //OleDbCommand cmd = new OleDbCommand(sQuery, cn);
                //cmd.ExecuteNonQuery();
                OleDbDataAdapter da = new OleDbDataAdapter(sQuery, cn);
                da.Fill(dt);
                return 0;
            }
            catch (Exception ex)
            {
                m_error = ex.Message.ToString();
                return -1;
            }
             
             picturebox.item = dt.rows[第几条纪录][0].tostring();
            
        }
      

  4.   

    下面那个问题还请你详细说说需求,三张图片中的两张动态加载到两个picturebox中去应该怎么理解
      

  5.   

    picturebox.item = dt.rows[第几条纪录][0].tostring(); 
    改成  foreach (datarow dr in dt.rows)
    {
       dr[列号].ToString();  //在这操作
    }
      

  6.   

    就是主界面上有两个picturebox,我想从数据库中提取最前面的两张分别加到picturebox中去,不过上面的access数据库中的图片是在一直增加的,但是我总是提取最前面的两张加载daopicturebox1与picturebox2中
      

  7.   


    try
    {
    oledbconnection cn=new oledbconnection("provider=....")
    cn.open()
    oledbcommand cmd =cn.createCommand;
    cmd.CommandText="select ID,imagesPath from images order by ID";
    oledbDataApadater da=new oledbDataApadater(cmd);
    datatable dt=new datatable();
    da.fill(dt);
    if(dt.rows.count>1)//必须2张以上
    {
      int i=0;
      picturebox1.ImageLoadcation=dt.Rows [i].ItemArray[1].ToString();
      picturebox2.ImageLoadcation=dt.Rows [i+1].ItemArray[1].ToString(); //I可变,可以用i 来控制显示哪两张。
    }
    da.dispose();
    dt.dispose();
    cmd.dispose();
    cn.close();
    }
    catch(oledbExepression ex)
    {
      ...............
    }不知道上面代码行不行,随手写的,自己测试一下。
      

  8.   

    呵呵·~~先谢谢Tord_zhang 了,我去试试先
      

  9.   

    dataset相当于一个数据库,datatable就是数据库中的一个表;至于下面的问题,我没有明白你的意思!
      

  10.   

    DataTable是一张表
    DataSet是表的集合
    在DataSet中可以包含多张DataTable表
      

  11.   


    using(OleDbConnection conn = new OleDbConnection("连接字符串"))
    {
        conn.Open();
        OleDbCommand cmd = new OleDbCommand("select top 2 * from 数据表名",conn);
        OleDbDataAdapter da = new OleDbDataAdapter();
        da.SelectCommand = cmd;
        cmd.ExecuteNonQuery();
        DataSet ds = new DataSet();
        da.Fill(ds);
        picturebox1.Load(ds.Tables[0].Rows[0]["imagesPath"].ToString();
        picturebox2.Load(ds.Tables[0].Rows[1]["imagesPath"].ToString();
    }
      

  12.   

    ojlovecd 的代码并不是在程序的根目录下寻找
      

  13.   

    正解,现在贴出完整代码,给那些需要的~~~
     public void show()
            {
                try
                {
                    OleDbConnection conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "\\" + "myDiary.mdb");
                    conn.Open();
                    OleDbCommand cmd = new OleDbCommand("select top 6 * from images", conn);
                    OleDbDataAdapter da = new OleDbDataAdapter();
                    da.SelectCommand = cmd;
                    cmd.ExecuteNonQuery();
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    pictureBox2.Load(Application.StartupPath+ds.Tables[0].Rows[0]["imagesPath"].ToString());
                    pictureBox4.Load(Application.StartupPath + ds.Tables[0].Rows[1]["imagesPath"].ToString());
                    pictureBox6.Load(Application.StartupPath + ds.Tables[0].Rows[2]["imagesPath"].ToString());
                    pictureBox5.Load(Application.StartupPath + ds.Tables[0].Rows[3]["imagesPath"].ToString());
                    pictureBox3.Load(Application.StartupPath + ds.Tables[0].Rows[4]["imagesPath"].ToString());
                    pictureBox7.Load(Application.StartupPath + ds.Tables[0].Rows[5]["imagesPath"].ToString());
                }
                catch (Exception ex)
                {
                    MessageBox.Show("出现错误" + ex.Message);
                }
            }
      

  14.   

    datatable是dataset的一部分
    dataset可以有很多有datatable
    类似于ds.tables[0]就是一个datatable
      

  15.   

    试着向DATASET Fill几个Table你就明白了
      

  16.   

    给个简单的看,一个DataSet放多个SQL server 数据库表数据
       using System.Data.SqlClient;
       string sql = "select * from table,select * from table2,select * from table3;
       string strCon = "server=.;database=数据库;uid=sa;pwd=sa";
       SqlConnection con = new SqlConnection(strCon);
       SqlDataAdapter sda = new SqlDataAdapter(sql,con);   DataSet ds = new DataSet();
       con.Open();
       sda.Fill(ds); //把table1,table2,table3都填充到ds中
       con.Close();
      
       取出来:
       DataTable dt1 = ds.Table["table1"];
       DataTable dt2 = ds.Table["table2"];
       ......
      

  17.   

    dataset 里面可以有N个datatable 
      

  18.   


    说的形象点DataSet 就像一个数据库DataTable 就像是数据库中的数据表
      

  19.   


    DataTable就是一张表
    DataSet是表的集合,里面可以是一张表,也可以是多张表
    具体怎么用要看实际操作
    如果你只是返回一个单独的数据集,你可以直接用DataTable,也可以用DataSet
    如果你要返回多个数据集的话,那你就只能用DataSet了
      

  20.   

     datatable只是一张表,就像你数据库的一个表
     dataset可以包含多个表,用ds.tables[0],0表示第几个表,
     datatable有值时,可以这样引用
    DataTable dt=new Datable();
    dt=数据源; 
    dt.rows["第几行"]["字段名称"]可以取得值了。