小弟初学,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中去,还望支招~~~~
下面是个实例,望各大虾帮下忙~~小弟满分相送存在access数据库,数据库的images表名中有如下的列名及记录
ID imagesPath
1 \images\picture\002.jpg
2 \images\picture\005.jpg
3 \images\picture\031.jpg
现在要做的就是如何利用datatable和dataset将这三张图片中的两张动态加载到两个picturebox中去,还望支招~~~~
解决方案 »
- 深度剖析三层架构,第四部。
- C#的combox实现 Delphi中 DBLookupComboBox的功能
- 怎样彻底释放一个Socket占用的端口
- 如何实现对于TreeView中的不同树节点有不同的右键菜单,如何实现(等ing online)
- 请教:如何用C#实现检测程序占有内存量
- 怎样在程序里调用外部程序(可执行文件.exe)?
- 请教一个组合算法的实现问题
- 求助,关于在C#上显示曲线图的问题!
- 怎样实现系统定时自动做些事
- 告诉我好吗?对不起,我是菜鸟!谢谢!
- 关于cdo的方法生成mht文件后,图片没有固化的问题???
- gridview调用列数据问题!!!!!!!!!!!!!!!!!!!!!!!!!!!
datatable只是一张表
dataset是表的集合。
可以通过数字或表名来索引DataTable
{
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();
}
改成 foreach (datarow dr in dt.rows)
{
dr[列号].ToString(); //在这操作
}
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)
{
...............
}不知道上面代码行不行,随手写的,自己测试一下。
DataSet是表的集合
在DataSet中可以包含多张DataTable表
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();
}
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);
}
}
dataset可以有很多有datatable
类似于ds.tables[0]就是一个datatable
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"];
......
说的形象点DataSet 就像一个数据库DataTable 就像是数据库中的数据表
DataTable就是一张表
DataSet是表的集合,里面可以是一张表,也可以是多张表
具体怎么用要看实际操作
如果你只是返回一个单独的数据集,你可以直接用DataTable,也可以用DataSet
如果你要返回多个数据集的话,那你就只能用DataSet了
dataset可以包含多个表,用ds.tables[0],0表示第几个表,
datatable有值时,可以这样引用
DataTable dt=new Datable();
dt=数据源;
dt.rows["第几行"]["字段名称"]可以取得值了。