C# 将视图中的信息插入到另一个表中,无需用户输入

C# 将视图中的信息插入到另一个表中,无需用户输入,c#,sql,visual-studio-2010,C#,Sql,Visual Studio 2010,我正在尝试使用C和Visual Studio 2010创建一个web服务,该服务将使用SQL查询将视图表中的值插入到另一个表中。在过去,我们使用过这种类型的服务,但是我们要求用户输入他们想要更新的值,但是对于我使用的查询,不需要用户输入,因为只有当其中一个字段值为NULL时才会插入值 下面是我一直试图使用的代码,我修改了我们以前使用的代码,但在这里我仍然期待用户的输入。如何更新代码以避免输入。我知道我可以从MySQL上运行这个查询,但我希望能够在我们的网站上创建一个按钮,以便其他人可以这样做。以

我正在尝试使用C和Visual Studio 2010创建一个web服务,该服务将使用SQL查询将视图表中的值插入到另一个表中。在过去,我们使用过这种类型的服务,但是我们要求用户输入他们想要更新的值,但是对于我使用的查询,不需要用户输入,因为只有当其中一个字段值为NULL时才会插入值

下面是我一直试图使用的代码,我修改了我们以前使用的代码,但在这里我仍然期待用户的输入。如何更新代码以避免输入。我知道我可以从MySQL上运行这个查询,但我希望能够在我们的网站上创建一个按钮,以便其他人可以这样做。以下是运行查询的代码:

public void AddUsers(string json)
{
    GetDbInstance();

    var sql = "insert into dbo.ASPECTS_users_activity " +
              "(user_id, usr_address, usr_phone, usr_email, usr_website, usr_photo ) " +
              "select @v.customer_id, @usr_address, @usr_phone, @usr_email, @usr_website, @usr_photo  " +
              "from dbo.ASPECTS_current_users_vw v where usr_photo is NULL;";

    var usrInformation = JsonConvert.DeserializeObject<UpdateExhibitors>(json);
    Console.WriteLine(usrInformation);

    var conn = db.Connection();

    try
    {
        SqlCommand command = new SqlCommand(sql, conn);

        command.Parameters.AddWithValue("@v.customer_id", usrInformation.master_customer_id);
        command.Parameters.AddWithValue("@usr_address", "123 XYZ Post, Columbus, IN");
        command.Parameters.AddWithValue("@usr_phone", "555-555-5555");
        command.Parameters.AddWithValue("@usr_email", "test@sample.com");
        command.Parameters.AddWithValue("@usr_website", "http://www.sample.com");
        command.Parameters.AddWithValue("@usr_photo", "");

        command.ExecuteNonQuery();

        command.Dispose();

        command = null;

    }
    catch (Exception e)
    {
        throw new Exception(e.ToString(), e);
    }
    finally
    {
        conn.Close();
    }
}

正如您所知,将从视图填充到的唯一字段将是customer_id字段,所有其他字段都将具有默认值,这些值将在另一点更新。这里知道SQL的人不多,所以如果我不在,创建此选项将提供一个选项。

因为您可以从MySQL运行此查询,所以我会将该查询保存为数据库中的存储过程。那么代码中既不需要SQL也不需要参数

SqlCommand command = new SqlCommand("yourStoredProcedureName", conn);
command.ExecuteNonQuery();
...

尝试删除视图列开头的@字符:选择v.customer_id,…@RichardDeeming,感谢您的输入,但我试图找到的是如何将代码更改为不需要用户输入,在没有字符串json的情况下,要完成的工作非常多。您使用参数的唯一地方是获取@v.customer\u id参数的值。由于该值应该来自视图,如果在查询中删除@符号,则可以删除查询参数,这意味着您可以删除usrInformation变量,这意味着您可以删除json方法参数;以及command.ExecuteNonQuery下面的任何内容;在try块中,不需要command.Parameters.AddWithValue?我不知道我将如何重写它,谢谢你去掉了第一个AddWithValue,它依赖于json参数。所有其他AddWithValue调用都使用静态值,因此您可以保留它们。谢谢@Sgr3005,这就成功了,我直到今天才能够测试它,但它仍然有效。
SqlCommand command = new SqlCommand("yourStoredProcedureName", conn);
command.ExecuteNonQuery();
...