簡體   English   中英

在C#中的數據表中添加行

[英]Adding rows in data table in c#

我已經在應用程序啟動方法中創建了一個數據表,並且嘗試從會話啟動方法向該數據表添加行。 當我嘗試添加行時,它在數據表上給出了一個錯誤

該名稱在當前上下文中不存在。

我是編程的初學者。 任何幫助表示贊賞。

這是我的代碼:

// application begins
void Application_Start(Object s, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("session_id", System.Type.GetType("System.String")));
    dt.Columns.Add(new DataColumn("username",   System.Type.GetType("System.String")));
    dt.Columns.Add(new DataColumn("login_time", System.Type.GetType("System.DateTime")));
    dt.Columns.Add(new DataColumn("ip_address", System.Type.GetType("System.String")));

    Application["visitorTable"] = dt;
}

// browser's first visit to the page, (session starts)
void Session_Start(Object s, EventArgs e)
{
    {
        Application.Lock();

        DataRow dr = dt.NewRow();

        dr["session_id"] = (System.String)HttpContext.Current.Session.SessionID; // session id
        dr["ip_address"] = Request.ServerVariables["SERVER_NAME"]; //ip-address

        dt.Rows.Add(dr);

        dt = (Database)Application["visitorTable"];

        Application["visitorTable"] = dt;

        Application.UnLock();
    }
}

創建新的DataTabe時,應指定表名。

    DataTable dt = new DataTable("VisitorTable");
    dt.Columns.Add(new DataColumn("session_id", System.Type.GetType("System.String")));
    dt.Columns.Add(new DataColumn("username",   System.Type.GetType("System.String")));
    dt.Columns.Add(new DataColumn("login_time", System.Type.GetType("System.DateTime")));
    dt.Columns.Add(new DataColumn("ip_address", System.Type.GetType("System.String")));

    Application["visitorTable"] = dt;
    // you create it like this 
    Application["visitorTable"] = dt;

    // and you read it like this
    dt = (Database)Application["VisitorTable"];

注意到問題了嗎?

同樣,您也不需要依賴反射來獲取類型的描述,簡單的編譯時間typeof(string)typeof(DateTime)會解決這個問題。

當您執行以下代碼時

DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("session_id", System.Type.GetType("System.String")));
    dt.Columns.Add(new DataColumn("username",   System.Type.GetType("System.String")));
    dt.Columns.Add(new DataColumn("login_time", System.Type.GetType("System.DateTime")));
    dt.Columns.Add(new DataColumn("ip_address", System.Type.GetType("System.String")));

您是否檢查過您的dt是否添加了指定的列名? 或dt是用Column1,colum2,column3列生成的,如果那些是用Column1,colum2,column3生成的,這就是為什么您會遇到上述錯誤,將列重命名為dt

檢查一下

動態創建DataTable並綁定到ASP.Net中的GridView

可能對你有幫助

 DataTable dt; void Application_Start(Object s, EventArgs e) { dt= new DataTable(); dt.Columns.Add(new DataColumn("session_id", System.Type.GetType("System.String"))); dt.Columns.Add(new DataColumn("username", System.Type.GetType("System.String"))); dt.Columns.Add(new DataColumn("login_time", System.Type.GetType("System.DateTime"))); dt.Columns.Add(new DataColumn("ip_address", System.Type.GetType("System.String"))); Application["visitorTable"] = dt; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM