C# 使用参数插入到表中
我的问题是,我试图通过在Sql代码中使用2个where语句来插入到表中 我的代码:C# 使用参数插入到表中,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我的问题是,我试图通过在Sql代码中使用2个where语句来插入到表中 我的代码: using (SqlConnection conn = new SqlConnection(@"Connection String")) { conn.Open(); using (var cmd = new SqlCommand(@"INSERT INTO AssignPlan (Reps, Sets, WeightOrTime, Date, MemberId, Exercise
using (SqlConnection conn = new SqlConnection(@"Connection String"))
{
conn.Open();
using (var cmd = new SqlCommand(@"INSERT INTO AssignPlan
(Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId)
Select @Reps, @Sets, @WeightOrTime, @Date,
Members.MemberId From Members Where Members.Username = @Username,
ExerciseDisplay.ExerciseId From ExerciseDisplay
Where ExerciseDisplay.ExerciseName = @Exercise", conn))
{
cmd.Parameters.AddWithValue("@Reps", txtReps.Text);
cmd.Parameters.AddWithValue("@Sets", txtSets.Text);
cmd.Parameters.AddWithValue("@WeightOrTime", txtWeight.Text);
cmd.Parameters.AddWithValue("@Date", txtDate.Text);
cmd.Parameters.AddWithValue("@Username", lblRegistered.Text);
cmd.Parameters.AddWithValue("@Exercise", txtName.Text);
cmd.ExecuteNonQuery();
Response.Redirect("Success.aspx");
}
conn.Close();
有没有关于如何重新表述我的SQL语句的想法?任何帮助都将不胜感激 假设成员和ExerciseDisplay之间没有关系,您可以执行交叉联接并过滤结果:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, Members.MemberId, ExerciseDisplay.ExerciseId " +
" From Members, ExerciseDisplay " +
" Where ExerciseDisplay.ExerciseName = @Exercise " +
" AND Members.Username = @Username ", conn))
或者,由于您只是从每个表中提取一个值,子查询也应该可以工作:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, " +
" (SELECT MemberId FROM Members WHERE Username = @Username), " +
" (SELECT ExerciseId FROM ExerciseDisplay WHERE ExerciseName = @Exercise) "
, conn))
但这要求每个子查询只返回一个值。假设成员和ExerciseDisplay之间没有关系,则可以执行交叉联接并过滤结果:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, Members.MemberId, ExerciseDisplay.ExerciseId " +
" From Members, ExerciseDisplay " +
" Where ExerciseDisplay.ExerciseName = @Exercise " +
" AND Members.Username = @Username ", conn))
或者,由于您只是从每个表中提取一个值,子查询也应该可以工作:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, " +
" (SELECT MemberId FROM Members WHERE Username = @Username), " +
" (SELECT ExerciseId FROM ExerciseDisplay WHERE ExerciseName = @Exercise) "
, conn))
但这要求每个子查询只返回一个值。假设成员和ExerciseDisplay之间没有关系,则可以执行交叉联接并过滤结果:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, Members.MemberId, ExerciseDisplay.ExerciseId " +
" From Members, ExerciseDisplay " +
" Where ExerciseDisplay.ExerciseName = @Exercise " +
" AND Members.Username = @Username ", conn))
或者,由于您只是从每个表中提取一个值,子查询也应该可以工作:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, " +
" (SELECT MemberId FROM Members WHERE Username = @Username), " +
" (SELECT ExerciseId FROM ExerciseDisplay WHERE ExerciseName = @Exercise) "
, conn))
但这要求每个子查询只返回一个值。假设成员和ExerciseDisplay之间没有关系,则可以执行交叉联接并过滤结果:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, Members.MemberId, ExerciseDisplay.ExerciseId " +
" From Members, ExerciseDisplay " +
" Where ExerciseDisplay.ExerciseName = @Exercise " +
" AND Members.Username = @Username ", conn))
或者,由于您只是从每个表中提取一个值,子查询也应该可以工作:
using (var cmd = new SqlCommand(
" INSERT INTO AssignPlan " +
" (Reps, Sets, WeightOrTime, Date, MemberId, ExerciseId) " +
" Select " +
" @Reps, @Sets, @WeightOrTime, @Date, " +
" (SELECT MemberId FROM Members WHERE Username = @Username), " +
" (SELECT ExerciseId FROM ExerciseDisplay WHERE ExerciseName = @Exercise) "
, conn))
但这要求每个子查询只返回一个值。最简单的解决方案是在应该是不同的列上进行排序。您应该解释users表和ExerciseDisplay表之间的关系。由于此查询不是有效的SQL语句,您不能有两个from语句,您必须将Members表连接到公共字段上的ExerciseDisplay表,然后只使用一个Where语句。我完全不清楚此查询。您是想在一次操作中插入两个表,还是想在一个表中插入参数值以及其他两个表之间的联接结果?尽管我很欣赏使用语句和参数化查询的热情。。。我觉得这是一个悲伤的日子,因为这让你获得了3张选票;)也就是说,您需要加入表。此查询将无法按原样工作。最简单的解决方案是在应该不同的列上进行查询。您应该解释users表和ExerciseDisplay表之间的关系。由于此查询不是有效的SQL语句,您不能有两个from语句,您必须将Members表连接到公共字段上的ExerciseDisplay表,然后只使用一个Where语句。我完全不清楚此查询。您是想在一次操作中插入两个表,还是想在一个表中插入参数值以及其他两个表之间的联接结果?尽管我很欣赏使用语句和参数化查询的热情。。。我觉得这是一个悲伤的日子,因为这让你获得了3张选票;)也就是说,您需要加入表。此查询将无法按原样工作。最简单的解决方案是在应该不同的列上进行查询。您应该解释users表和ExerciseDisplay表之间的关系。由于此查询不是有效的SQL语句,您不能有两个from语句,您必须将Members表连接到公共字段上的ExerciseDisplay表,然后只使用一个Where语句。我完全不清楚此查询。您是想在一次操作中插入两个表,还是想在一个表中插入参数值以及其他两个表之间的联接结果?尽管我很欣赏使用语句和参数化查询的热情。。。我觉得这是一个悲伤的日子,因为这让你获得了3张选票;)也就是说,您需要加入表。此查询将无法按原样工作。最简单的解决方案是在应该不同的列上进行查询。您应该解释users表和ExerciseDisplay表之间的关系。由于此查询不是有效的SQL语句,您不能有两个from语句,您必须将Members表连接到公共字段上的ExerciseDisplay表,然后只使用一个Where语句。我完全不清楚此查询。您是想在一次操作中插入两个表,还是想在一个表中插入参数值以及其他两个表之间的联接结果?尽管我很欣赏使用语句和参数化查询的热情。。。我觉得这是一个悲伤的日子,因为这让你获得了3张选票;)也就是说,您需要加入表。此查询不会按原样工作。我想知道WHERE的存在是否有助于减少两个表的笛卡尔乘积的影响。我想知道WHERE的存在是否有助于减少两个表的笛卡尔乘积的影响。我想知道WHERE的存在是否有助于减少两个表的笛卡尔乘积的影响WHERE有助于减少两个表的笛卡尔乘积的影响。我想知道WHERE的存在是否有助于减少两个表的笛卡尔乘积的影响。