关于在asp.net中使用数据库的临时表.

原创 2004年06月23日 17:21:00

因为C#的连接是断开式连接,所以在使用数据库临时表是读不出数据的,经过一段时间的探索,终于找出办法:就是先将数据填充到DATATABLE中,然后再使用DataAdapter将DATATABLE的数据上传到临时表,同时在不断开数据连接的前提下,执行其他的SQL语句.

简单例子如下:

 private void Page_Load(object sender, System.EventArgs e)
  {
      if(!this.IsPostBack)
      {
          DataTable myda=new DataTable();
          DataColumn dcName=myda.Columns.Add("ID");
          dcName.DataType=Type.GetType("System.String");
          dcName=myda.Columns.Add("CLASSID");
          dcName.DataType=Type.GetType("System.String");
          dcName=myda.Columns.Add("MCLASSID");
          dcName.DataType=Type.GetType("System.String");
          dcName=myda.Columns.Add("MCLASSNAME");
          dcName.DataType=Type.GetType("System.String");
           this.ViewState["table"]=myda;
         }
  }
  private void Button2_Click(object sender, System.EventArgs e)
  {
   DataTable myda=(DataTable)this.ViewState["table"];
   DataRow dr= myda.NewRow();
   dr[0]=this.id.Text;
   dr[1]=this.TextBox3.Text;
   dr[2]=this.mclassid.Text;
   dr[3]=this.mclassname.Text;
   myda.Rows.Add(dr);
   this.DataGrid1.DataSource=myda;
   this.DataGrid1.DataBind();
  }

  private void Button1_Click(object sender, System.EventArgs e)
  {
   DataTable ntable=(DataTable)this.ViewState["table"];

   myCn = new OracleConnection(strConn);
   myCn.Open();

   myCm=myCn.CreateCommand();
   OracleTransaction trans = myCn.BeginTransaction();
   myCm.Connection=myCn;
   myCm.Transaction=trans;

   try{
    OracleDataAdapter MyAdapter = new OracleDataAdapter();
    OracleTransaction trans = myCn.BeginTransaction();

    MyAdapter.InsertCommand =myCm;
    MyAdapter.InsertCommand.CommandText = "C_NAME_INN";
    MyAdapter.InsertCommand.CommandType=CommandType.StoredProcedure;
  
    MyAdapter.InsertCommand.Connection = myCn;

    OracleParameter p2 = new OracleParameter("V_ID", OracleType.VarChar,40);
    p2.SourceVersion = DataRowVersion.Current;
    p2.SourceColumn = ntable.Columns[0].ColumnName;
    MyAdapter.InsertCommand.Parameters.Add(p2);

    OracleParameter p1 = new OracleParameter("V_CLASSID", OracleType.VarChar, 40);
    p1.SourceVersion = DataRowVersion.Current;
    p1.SourceColumn = ntable.Columns[1].ColumnName;
    MyAdapter.InsertCommand.Parameters.Add(p1);

    OracleParameter p3 = new OracleParameter("V_MCLASSID", OracleType.VarChar, 40);
    p3.SourceVersion = DataRowVersion.Current;
    p3.SourceColumn = ntable.Columns[2].ColumnName;
    MyAdapter.InsertCommand.Parameters.Add(p3);

    OracleParameter p4 = new OracleParameter("V_MCLASSNAME", OracleType.VarChar, 40);
    p4.SourceVersion = DataRowVersion.Current;
    p4.SourceColumn = ntable.Columns[3].ColumnName;
    MyAdapter.InsertCommand.Parameters.Add(p4);

    
    MyAdapter.Update(ntable);

    myCm.Parameters.Clear();
    myCm.CommandText="ADD_CNAME";
    myCm.CommandType = CommandType.StoredProcedure;
    myCm.ExecuteNonQuery();
    myCm.CommandText="C_NAME_DISPLAY";
    myCm.CommandType = CommandType.StoredProcedure;
    OracleParameter []pa ={ new OracleParameter("returnInfo",OracleType.Cursor)};
    pa[0].Direction = ParameterDirection.Output;
    myCm.Parameters.Add(pa[0]);
    OracleDataReader ds=myCm.ExecuteReader(CommandBehavior.Default);
    this.DataGrid1.DataSource=ds;
    this.DataGrid1.DataBind();
    trans.Commit();
   }
   catch (OracleException er)
   {
    throw new  Exception(er.Message);
   }
   finally
   {
    trans.Dispose();
   }
  }

该例子应该可以再精简使用!!

关于在asp.net中使用数据库的临时表.

因为C#的连接是断开式连接,所以在使用数据库临时表是读不出数据的,经过一段时间的探索,终于找出办法:就是先将数据填充到DATATABLE中,然后再使用DataAdapter将DATATABLE的数据上...
  • stlwj
  • stlwj
  • 2004年06月23日 17:21
  • 1940

ADO.net中DataTable 临时表的简单使用

DataTable dt = new DataTable("Student");//新建临时表--"Student"为临时表的表名可有可无(没有的的时候就是系统自动指定默认)            ...
  • yf505261213
  • yf505261213
  • 2012年11月28日 17:13
  • 1240

SQL 临时表的作用

需求:当我们需要对查询出来的结果进行修改,然后再使用这些数据的时候需要使用到临时表。比如:表A有字段id,name,money。表B有字段id,表B有字段id,name,money。 需要将表A的字...
  • sunhuwh
  • sunhuwh
  • 2016年09月29日 08:15
  • 1872

视图及临时表的使用场景

作者:达达lee 链接:https://www.zhihu.com/question/21675233/answer/101170877 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权...
  • qq_31333369
  • qq_31333369
  • 2017年03月09日 10:51
  • 661

sql server中如何创建,使用,释放临时表

drop table #Tmp   --删除临时表#Tmp create table #Tmp --创建临时表#Tmp (     ID   int IDENTITY (1,1)     not...
  • ArvinStudy
  • ArvinStudy
  • 2012年03月15日 17:30
  • 1819

判断临时表是否存在的新方法

IF OBJECT_ID(tempdb..#) IS NOT NULL    DROP TABLE #此句检查是否存在 临时表#OBJECT_ID此函数返回数据库对象标识号用OBJECT_ID可以举一...
  • lee576
  • lee576
  • 2006年10月09日 22:48
  • 1876

【数据库】临时表——基本知识

临时表,大家肯定听说过吧,接下来的几篇博客,就和大家分享一下临时表。     如下,是存储过程中使用的sql语句:  基本概念:     我们在创建一个基本实表(用户表)的时候,一般都是如下的写...
  • u013047824
  • u013047824
  • 2016年07月07日 21:34
  • 735

SQL Server 存储过程在ASP.NET中的应用

     今天遇到的问题是需要尽量简化ASP.NET中访问SQL Server的操作。直接用SQL语句肯定是不行了,因为这样并不便于后期的程序维护,也不符合编程的习惯(尽量把数据和控制分开),通常的在...
  • sailor32731958
  • sailor32731958
  • 2010年01月06日 23:28
  • 355

利用临时表备份,需要修改的数据表

select * into #tblTest1_bak from tbTest1 select * from #tblTest1_bak
  • czf2505
  • czf2505
  • 2014年03月20日 17:03
  • 305

asp.net知识库

  • 2015年06月18日 08:45
  • 48B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于在asp.net中使用数据库的临时表.
举报原因:
原因补充:

(最多只允许输入30个字)