SQL等同于C#的User.Identity.Name

时间:2015-01-12 13:38:55

标签: c# asp.net sql-server gridview

是否存在与ASP.Net/C#'s" User.Identity.Name"相当的SQL。输出用户的Windows域名?我在ASP.net Web应用程序中有一个formview,其中一个文本框用于Username。用户名是从用户的Windows域中提取的。当我填写表单时,User.Identity.Name命令将该值放在文本框中,但是当我将记录插入到gridview中时,表示SQL dababase表,没有显示任何内容。所以我认为它与改变"默认值或绑定"有关。 sql表设计中的值"用户名"但我不确定该命令是什么。

在翻译中遇到麻烦的另一个领域是UserDate。这将检索插入记录的当前日期和时间。再次,当我填写formview表单时,它会自动使用当前日期和时间填充Userdate字段,这是我想要的,但是当我插入时,gridview中没有显示任何内容。但是,如果我手动将数据/记录作为查询直接插入SQL服务器,其中DOESNT包含UserDate列,gridview会显示日期和时间,但它不会显示在SQL数据库中。

HTML标记:

            Username:
            <asp:TextBox ID="UsernameTextBox" runat="server" Text='<%# User.Identity.Name %>' />
            <br />
            UserDate:
            <asp:TextBox ID="UserDateTextBox" runat="server" Text='<%#  DateTime.Now %>' />
            <br />

SQL Query我用来直接将记录填充到数据库中:

insert into dbo.PO_Table (PO_ID, PO_Title, Date_Received, Date_Completed)
Values(100,'First PO',01/01/01,02/02/02);

insert into dbo.PO_Table (PO_ID, PO_Title, Date_Received, Date_Completed)
Values(200,'Second PO',03/03/03,04/04/04);

insert into dbo.PO_Table (PO_ID, PO_Title, Date_Received, Date_Completed)
Values(300,'Third PO',05/05/05,06/06/06);

我的插入存储过程:

 ALTER PROCEDURE [dbo].[InsertPO]
    @PO_ID INT,
    @PO_Title nvarchar(50),
    @Date_Received date,
    @Date_Completed date,
    @PO_Note nvarchar(50),
@Username varchar(30),
@UserDate date


AS
BEGIN
INSERT INTO dbo.PO_Table(PO_ID,PO_Title,Date_Received,Date_Completed,Username,UserDate,PO_Note)
VALUES(@PO_ID,@PO_Title,@Date_Received,@Date_Completed,@Username,@UserDate,@PO_Note);


   insert into task (PO_AutoID,PO_ID)
SELECT PO_AutoID,PO_ID
FROM po_table
WHERE PO_ID = @PO_ID
END

1 个答案:

答案 0 :(得分:0)

试试这个。您想要SUSER_SNAME()或SUSER_NAME()

SELECT 
USER_ID() as UserId, USER_NAME() as UserName, 
USER_SID() as UserSId, SUSER_SNAME() as SUserSName, 
SUSER_ID() as SUserId, SUSER_NAME() as SUserName, 
SUSER_SID() as SUserSId

SUSER_SNAME()返回DOMAIN \ USER

我错过了问题的第二部分。

GETDATE()将返回SQL Server的当前日期