无需用户输入即可将视图中的信息插入另一个表

时间:2015-07-16 13:16:06

标签: c# sql visual-studio-2010

我正在尝试使用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();
    }
}

这是模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Customer_Insert.Models {
    public class AddUsers {
        public string customer_id { get; set; }
        public string usr_address { get; set; }
        public string usr_phone { get; set; }
        public string usr_email { get; set; }
        public string usr_website { get; set; }
        public string usr_photo { get; set; }
    }
}

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

1 个答案:

答案 0 :(得分:1)

由于您“只能从MySQL运行此查询”,我会将该查询保存为数据库中的存储过程。那么你的代码中既不需要SQL也不需要参数。

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