1

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

不同的人会看到不同的页面。我在ExecuteScalar命令中遇到错误,可能我的查询不正确或者ExecuteScalar无法保存查询...我收到data type mismatch错误消息。

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

1 回答 1

1

问题是您正在使用带有错误查询的 ExecuteScalar。

string a = (string) comm.ExecuteScalar();

ExecuteScalar() 将返回单个值作为查询的结果。

请将您的查询更改为像打击这样的查询,它从数据库返回单个值而不是整个列

Select NIC FROM LogINTable WHERE NIC= '" + NIc + "' AND Active=0 AND page=1" 

来源:http: //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx

我希望它会帮助你。

于 2013-05-13T09:25:20.620 回答