Asp.net 用于验证NIC号的登录页

Asp.net 用于验证NIC号的登录页,asp.net,Asp.net,我面临以下问题:我在Access 2010上有一个数据库,其中有NIC、Active和Page,所有字段都是数字类型。我想创建一个登录页面,将NIC(数字)作为用户的输入,然后根据其NIC将其重定向到特定页面 不同的人会看到不同的页面。。我在ExecuteScalar命令中遇到错误,可能是我的查询不正确,或者ExecuteScalar无法保留查询。。。我得到数据类型不匹配错误 try { FirsstPage f = new FirsstPage(); SecondPage se

我面临以下问题:我在Access 2010上有一个数据库,其中有
NIC
Active
Page
,所有字段都是数字类型。我想创建一个登录页面,将
NIC
(数字)作为用户的输入,然后根据其NIC将其重定向到特定页面

不同的人会看到不同的页面。。我在
ExecuteScalar
命令中遇到错误,可能是我的查询不正确,或者
ExecuteScalar
无法保留查询。。。我得到
数据类型不匹配
错误

try
{
    FirsstPage f = new FirsstPage();
    SecondPage second = new SecondPage();
    oledcon.Open();

    string NIc = ( TextBox1.Text);
    // string query = "select * from LogINTable where NIC='" + NIc + "'AND Active=0 AND page=1";
    //string query = "select * from LogINTable where NIC='" + nic + "'AND Active=0";
    string query = "SELECT * FROM LogINTable WHERE NIC= '" + NIc + "' AND Active=0 AND page=1";
    //string query = "select
    OleDbCommand comm = new OleDbCommand( query,oledcon);
    string a = (string) comm.ExecuteScalar();
    if (a != null)
    {
        Response.Redirect("FirsstPage.aspx");
        string update = "update into LogINTable Active='1' where NIC='" + NIc + "' ";
        //OleDbCommand com = new OleDbCommand();
        //int b = Convert.ToInt32( com.ExecuteScalar());
    }
    else
    {
        Response.Redirect("SecondPage.aspx");
        string update = "update into LogINTable Active='1' where NIC='" +NIc + "' ";
    }

    oledcon.Close();
}
catch (Exception ex)
{
    Label1.Text = ex.Message;
}
finally 
{
    oledcon.Close();
}

问题是您使用的ExecuteScalar查询错误

string a = (string) comm.ExecuteScalar();
ExecuteScalar()将作为查询结果返回单个值

请将您的查询更改为类似blow的查询,它从数据库返回单个值,而不是整个列

Select NIC FROM LogINTable WHERE NIC= '" + NIc + "' AND Active=0 AND page=1" 
资料来源:


我希望它能帮助您。

问题是您使用的ExecuteScalar查询错误

string a = (string) comm.ExecuteScalar();
ExecuteScalar()将作为查询结果返回单个值

请将您的查询更改为类似blow的查询,它从数据库返回单个值,而不是整个列

Select NIC FROM LogINTable WHERE NIC= '" + NIc + "' AND Active=0 AND page=1" 
资料来源:


我希望它能对您有所帮助。

我或多或少地重写了您的整个问题,使其真正可读,删除所有l33t sp34k等。如果你想让人们花时间回答问题,如果他们必须先花5分钟来理解问题,他们就不太愿意帮助你,那么请注意演讲。选择*(除了在
EXISTS()
子句中)几乎总是一个坏主意,特别是在这里,你只需要一个列的值如果
NIC
列是数字的,为什么要将该值加引号?请使用参数,以防止。我或多或少地重写了你的整个问题,以便实际可读,删除所有l33t sp34k等。如果你想让人们花时间回答问题,如果他们必须先花5分钟来理解问题,他们就不太愿意帮助你,那么请注意演讲。选择*(除了在
EXISTS()
子句中)几乎总是一个坏主意,特别是在这里,您只需要一个列的值如果
NIC
列是数字,为什么要将该值放在引号中?请使用参数,为了防止。感谢回复,但我仍然收到此错误:条件表达式中的数据类型不匹配。感谢回复,但我仍然收到此错误:条件表达式中的数据类型不匹配。