1

我正在一个查询和更新数据库的本地主机站点上工作。我没有经常使用 ASP.NET。

我想知道是否可以找出当前的 windows 用户,然后选择数据库中与找到的用户名匹配的所有记录。

我知道如何使用 vbscript 执行此操作,但我需要使其在 cshtml 文件中工作。

  1. 如何定位用户?
  2. 我选择的句子会是什么样子?

任何帮助或建议表示赞赏。

谢谢。

编辑:

这是我用来显示来自特定用户的数据的代码:

@{
var db = Database.Open("Database") ;
var selectCommand = "SELECT * FROM Table WHERE UserID = 'asmith'";
var searchTerm = "";

var selectedData = db.Query(selectCommand, searchTerm);
var grid = new WebGrid(source: selectedData, defaultSort: "Team", rowsPerPage:20);

}

当我更改WHERE UserID = 'asmith'为 时WHERE UserID = @Environment.UserName,我收到错误:

There was an error parsing the query. [ Token line number = 1,Token line offset = 48,Token in error = . ]下面以红色突出显示。

Line 15:     var selectedData = db.Query(selectCommand, searchTerm);

编辑#2:

这成功地查询了数据库并返回了正确的数据,但不干净并且导致页面上的另一个查询出现问题。

var CurrUser = Environment.UserName;
var db = Database.Open("Database") ;
var selectCommand = "SELECT * FROM Table WHERE UserID = @0";
var searchTerm = @CurrUser;
4

2 回答 2

0

只是为了清理和解决旧帖子,我会将选择更改为更像这样的内容:

var currentUser = Request.LogonUserIdentity.Name.Substring(Request.LogonUserIdentity.Name.LastIndexOf(@"\") + 1);
var selectCommand = "SELECT * FROM Table WHERE UserID = @0";
var selectedData = db.Query(selectCommand, currentUser);
于 2015-02-04T18:10:46.090 回答
0

您缺少单引号:

var selectCommand = "SELECT * FROM Table WHERE UserID = 'asmith'";

应该:

var selectCommand = "SELECT * FROM Table WHERE UserID = '@" + Environment.UserName + "'";

Environment.UserName是一个string。您正在查询 where UserID。你确定UserID不应该是 anint或 someuniqueidentifier吗?

于 2013-02-05T02:46:40.183 回答