在 C# 中创建了 temp table,我试图在其中复制表,一个 sqlexception(无效的对象名称'#xyz'。)创建 temp table 的正确方法吗

created temp table in C#,i tried to copy tabls in it, an sqlexception(Invalid object name '#xyz'.)is it right way to create temp table

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=.;AttachDbFilename=C:\Users\Amit\Documents\ghf.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

    SqlDataAdapter sda = new SqlDataAdapter(("create table  #xyz(pid int, pname nvarchar(50),pamount nvarchar(50),cid int,cname nvarchar(50)"), con);
    dt = new DataTable();
    sda.Fill(dt);   

    dataGridView1.DataSource = dt;
}


SqlConnection con = new SqlConnection(@"Data Source=.;AttachDbFilename=C:\Users\Amit\Documents\ghf.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand cmd = new SqlCommand("insert into #xyz (pid, pname, pcost , cid ,cname) select  product.pid,product.pname,product.pcost ,category.cid ,category.cname  from product inner join category on product.cid = category.cid", con);

SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
dataGridView1.DataSource = dt;

临时 table 仅对创建它的连接可见。

要使用临时 table,您的插入 SqlCommand 必须使用与创建 table SqlCommand 相同的 con 对象,而无需关闭连接-之间。

要按原样使用代码,您必须使 table 成为实际的 table 而不是临时 table(去掉 #),但是您的 button1_click 事件处理程序将需要先检查 table 是否存在,然后再尝试创建它,并且前一个 运行 的数据仍将在其中。