C# SQL-将行从表复制到表,并修改值

C# SQL-将行从表复制到表,并修改值,c#,sql,sql-server,winforms,C#,Sql,Sql Server,Winforms,您好,我正在尝试将多行从表复制到另一个表,如下所示: DataSet dt2 = new DataSet(); SqlDataAdapter SDA2 = new SqlDataAdapter("SELECT text,castka FROM zajsluz WHERE akce='" + tentoradek + "' and rocnik='" + klientClass.Rocnik() + "'", spojeni); SDA2.Fill(dt2); spojeni.Close();

您好,我正在尝试将多行从表复制到另一个表,如下所示:

DataSet dt2 = new DataSet();
SqlDataAdapter SDA2 = new SqlDataAdapter("SELECT text,castka FROM zajsluz WHERE akce='" + tentoradek + "' and rocnik='" + klientClass.Rocnik() + "'", spojeni);
SDA2.Fill(dt2);
spojeni.Close();

string sqlcom2 = "INSERT INTO zajsluz(akce,text,castka,rocnik) values (@akce,@text,@castka,@rocnik)";

SqlCommand sc2 = new SqlCommand(sqlcom2, spojeni);
sc2.Parameters.AddWithValue("@akce", zakce.Text);
sc2.Parameters.AddWithValue("@rocnik", klientClass.Rocnik());
sc2.Parameters.AddWithValue("@text", dt2.Tables["zajsluz"].Columns["text"]);
sc2.Parameters.AddWithValue("@castka", dt2.Tables["zajsluz"].Columns["castka"]);
spojeni.Open();
sc2.ExecuteNonQuery();
spojeni.Close();
但我明白了: 执行sc2.Parameters时,对象引用未设置为对象的实例。AddWithValue@text,dt2.Tables[zajsluz]。Columns[text]

您想要插入。选择插入的形式。其结构如下所示:

INSERT INTO zajsluz(akce, text, castka, rocnik)
    SELECT @skce, text, castka, @rocnik 
    FROM zajsluz
    WHERE akce='" + tentoradek + "' and rocnik='" + klientClass.Rocnik() + "'"

您需要插入变量的值才能得到所需的值。

您的数据集列真的命名为text吗?不是吗?我可以问一下我在哪里犯了错误吗?嗨,marek-你能告诉我们你在哪一行代码中遇到了错误吗?请安装一个调试器并检查执行情况flow@Marek,将您的ÌNSERT`查询更改为@Gordon answer,然后,您不再需要DataSet了…而且强烈建议使用参数化查询,而不是通过直接连接SQL和未验证的用户输入来构建SQL语句。。。