我是这样的
SqlCommand cm = new SqlCommand("create table #t(dc0 int)",conn);
cm.ExecuteNonQuery();//没错
myClass1.insert("insert into #t(dc0) values(34)");//报错

解决方案 »

  1.   

    #t这个临时表只在一次会话内才有效,cm.ExecuteNonQuery()实际上最后关闭了数据库连接,所以当你插入数据时会报错;
      

  2.   

    可以把查询语句写和产生表格的语句写在一起
    create table #t(dc0 int)
    insert into #t(dc0) values(34)")
    select * from #t
      

  3.   

    临时表
    SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。临时表有两种类型: 本地临时表 
    以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。全局临时表 
    以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。现在,临时表的许多传统用途可由具有 table 数据类型的变量替换。