简体   繁体   English

在C#中的数据表中添加行

[英]Adding rows in data table in c#

I have created a data table in my Application start method and I am trying to add rows to this data table from my session start method. 我已经在应用程序启动方法中创建了一个数据表,并且尝试从会话启动方法向该数据表添加行。 When I try to add rows, it gives an error on the data table that 当我尝试添加行时,它在数据表上给出了一个错误

the name does not exists in the current context. 该名称在当前上下文中不存在。

I am a beginner to programming. 我是编程的初学者。 Any help is appreciated. 任何帮助表示赞赏。

Here is my code: 这是我的代码:

// 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();
    }
}

You should specify the table name when creating a new DataTabe... 创建新的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"];

Notice the issue? 注意到问题了吗?

Also you don't need to rely on reflection to get a type's description, a simple compile time typeof(string) and typeof(DateTime) will take care of it. 同样,您也不需要依赖反射来获取类型的描述,简单的编译时间typeof(string)typeof(DateTime)会解决这个问题。

when your are executing following code 当您执行以下代码时

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")));

have you checked whether your dt added with column name specified ? 您是否检查过您的dt是否添加了指定的列名? or dt is generated with columns Column1,colum2,column3 if those are generated with Column1,colum2,column3 ths why you ll be facing above error , rename column with your name of dt 或dt是用Column1,colum2,column3列生成的,如果那些是用Column1,colum2,column3生成的,这就是为什么您会遇到上述错误,将列重命名为dt

Check this 检查一下

Dynamically create DataTable and bind to GridView in ASP.Net 动态创建DataTable并绑定到ASP.Net中的GridView

it might be help you 可能对你有帮助

 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