2016-09-19 74 views
0

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

例如: 从表CD中读取ID的信息,并在表CD-ACCESS中存储ID与日期和时间的信息。

+0

感谢一个例子,我不知道,因为我没有改变任何数据,我只是想知道和存储从访问什么表行CD表。基本上我只是想在该表上进行某种自定义分析以找出最受欢迎的CD,并在网站上进一步使用该信息。 –

回答

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; 
     } 
+0

这听起来像一个很好的计划,肯定会提高性能,你会碰巧有关于这个问题的更多信息? –

+0

因为我目前没有关于数据库访问的信息,所以我很难给你一些具体的例子或帮助。 通过查看你的文章,我猜你正在使用一个DataTable,它由一个SqlDataAdapter填充。您将此DataTable放入您的WebService并访问您需要的行。 我建议不传输数据表,而是使用数据传输对象,这意味着一个新的类拥有您需要从数据表中获取的所有信息和属性。 – KoPoCabana

+0

为代码存储的proc访问添加了一个示例(没有实体框架)。 – KoPoCabana