本例子演示如何使用DataTable
例一
string connStr = "data source=ORC10; uid=scott; pwd=tiger; unicode=true";
string sqlStr = "SELECT * FROM EMP";
System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection(connStr);
conn.Open();
System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand(sqlStr, conn);
System.Data.OracleClient.OracleDataAdapter da = new System.Data.OracleClient.OracleDataAdapter(cmd);
System.Data.DataTable dt = new System.Data.DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr[0].ToString() + " ");
}
}
else
{
Response.Write("没有找到相应的匹配!");
}
da.Dispose();
cmd.Dispose();
conn.Close();
conn.Dispose();
说明
1) 简单来说,从数据库中获得数据,既可以放到OracleDataReader,有可以放到DataTable或是DataSet,但是如何选择,取决于你是否处理你获得的数据。
例二
string connStr = "Data Source=ora11g;uid=scott;pwd=tiger;unicode=true";
string sqlStr = "select * from emp";
OracleConnection conn=new OracleConnection(connStr);
OracleDataAdapter da = new OracleDataAdapter(sqlStr, conn);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr[0].ToString() + ", " + dr[1].ToString() + ", " + dr[3].ToString());
Response.Write(dr["empno"].ToString() + ", " + dr["ename"].ToString() + ", " + dr["mgr"].ToString());
}
conn.Close();
说明:
1) 在DataRow中,既可以用索引,也可以用字段名。在实际项目中,为了容易维护,我们通常都写字段名;
2) 本例直接使用了OracleDataAdapter,而没有使用OracleCommand对象。
例三
string connStr = "Data Source=ora11g;uid=scott;pwd=tiger;unicode=true";
string sqlStr = "SELECT * FROM EMP";
using (OracleConnection conn = new OracleConnection(connStr))
{
OracleCommand cmd = new OracleCommand(sqlStr, conn);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr["empno"].ToString() + ", " + dr["ename"].ToString() + ", " + dr["mgr"].ToString());
}
conn.Close();
说明:
1) 本例使用OracleCommand对象。
例四
string connStr = "Data Source=ora11g;uid=scott;pwd=tiger;unicode=true";
string sqlStr = "SELECT * FROM EMP";
using (OracleDataAdapter da = new OracleDataAdapter(sqlStr, connStr))
{
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr["empno"].ToString() + ", " + dr["ename"].ToString() + ", " + dr["mgr"].ToString());
}
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr["empno"].ToString() + ", " + dr["ename"].ToString() + ", " + dr["mgr"].ToString());
}
}
说明:
1) DataTable与OracleDataReader不同,可以任意次输出,而DataReader是只读、只向前的,所以只能输出一次。
2) 本例使用了using关键字,可以自动调用Dispose()方法,就不用你再显示调用了。