从其他表中的Web服务存储表行访问

时间:2016-09-19 11:44:30

标签: c# sql-server json web-services analytics

我正在尝试查找有关以下内容的信息。我有一个包含CD音乐信息和唯一ID的表,我的Web服务(VS中的C#)访问该表的行信息。现在我想在另一个表中存储何时以及从Web服务(JSON)调用请求的唯一ID。谁能指点我一些好消息?我查看了触发器,但他们没有在sql中完成工作,因为唯一检测到更新,删除或插入,在我的情况下,信息只被访问而不是更改所以现在我想也许我可以在Web服务调用中执行此操作

实施例: 从表CD中读取有关ID的信息,并在表CD-ACCESS中读取存储ID以及日期和时间。

1 个答案:

答案 0 :(得分:0)

我建议让数据库或数据库层进行访问跟踪。由于您使用的是sql-server,我建议使用存储过程进行读访问。在那里,您可以做任何想要跟踪发生的事情(无需连接或至少从您的Web服务再次与您的数据库通信)。

CREATE PROCEDURE [dbo].[stpReadInformation] 
AS
BEGIN

SET NOCOUNT ON;

DECLARE @readId int;

SELECT @readId = SELECT Id FROM tabCdInfos WHERE ....

INSERT INTO tabCdAccesses
@readId, GETDATE(), <UserInfo>, ...

SELECT @readId;
END

如果需要,您可以执行此交易。

以下是通过ado.net访问存储过程的示例

        using (var con = new SqlConnection(_connectionstring))
        {
            con.Open();
            var cmd = new SqlCommand(<NameOfStoredProcedure>, con) { CommandType = CommandType.StoredProcedure };
            cmd.Parameters.Add("@param", DbType.String).Value = <yourParamValue>;
            var rdr = cmd.ExecuteReader();
            if (rdr.Read())
            {
                return new YourDataModel(
                    rdr.GetGuid(0),
                    rdr.GetInt32(1)
            }

            return null;
        }