代码plz中的错误检查此代码错误是:char数据类型到datetime数据类型的转换导致超出范围的datetime值. [英] error in code plz check this code error is The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

查看:105
本文介绍了代码plz中的错误检查此代码错误是:char数据类型到datetime数据类型的转换导致超出范围的datetime值.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

代码错误是
将char数据类型转换为datetime数据类型会导致超出范围的datetime值.
该声明已终止



我的数据库表是User
ID int
电子邮件主键varchar(250)
密码varchar(250)
名称varchar(250)
国家varchar(250)
性别varchar(250)
年varchar(250)
日期varchar(250)
月varchar(250)
RegisterDate日期时间allownulls
LastLogin日期时间allownulls
说明varchar(50)
ImageName varchar(1000)

登录代码为

error in code is
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated



MY database table is User
ID int
Email primarykey varchar(250)
Password varchar(250)
Name varchar(250)
Country varchar(250)
Gender varchar(250)
Year varchar(250)
Date varchar(250)
Month varchar(250)
RegisterDate datetime allownulls
LastLogin datetime allownulls
Description varchar(50)
ImageName varchar(1000)

login code is

DataBaseClass dbClass = new DataBaseClass();
public DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void OnAuthenticate(object sender, AuthenticateEventArgs e)
{
    bool Authenticated = false;
    CheckBox chBox = (CheckBox)ctlLogin.FindControl("RememberMe");
    Authenticated = UserAuthenticate(ctlLogin.UserName, ctlLogin.Password);
    e.Authenticated = Authenticated;
    if (Authenticated == true)
    {
        if (chBox.Checked == true)
        {
            Response.Cookies["RFriend_Email"].Value = ctlLogin.UserName;
            Response.Cookies["RFriend_PWD"].Value = ctlLogin.Password;
            Response.Cookies["RFriend_UID"].Value = Session["UserId"].ToString();
            Response.Cookies["RFriend_Email"].Expires = DateTime.Now.AddMonths(3);
            Response.Cookies["RFriend_PWD"].Expires = DateTime.Now.AddMonths(3);
            Response.Cookies["RFriend_UID"].Expires = DateTime.Now.AddMonths(3);
        }
        Response.Redirect("UserDetails.aspx?Id=" + Session["UserId"].ToString());
    }
}
private bool UserAuthenticate(string UserName, string Password)
{
    bool boolReturnValue = false;
    //--------------------------------
    //Check UserID From Config File
    if (UserName == "Rahul" && Password == "Saxena")
    {
        boolReturnValue = true;
        return boolReturnValue;
    }
    else
    {
        //--------------------------------
        dt = new DataTable();
        string chkUser = "Select * FROM [User] where Email=''" + UserName + "'' AND Password=''" + Password + "''";
        dt = dbClass.ConnectDataBaseReturnDT(chkUser);
        if (dt.Rows.Count > 0)
        {
            boolReturnValue = true;
            Session["UserId"] = dt.Rows[0]["Id"].ToString();
            string updateLastLogin = "Update [User] SET LastLogin=''" + System.DateTime.Now.ToString() + "'' where Id=''" + Session["UserId"].ToString() + "''";
            dbClass.ConnectDataBaseToInsert(updateLastLogin);
        }
        return boolReturnValue;
    }
}
protected void lnkRegister_Click(object sender, EventArgs e)
{
    Response.Redirect("Register.aspx");
}



数据库类代码为



database class code is

SqlDataAdapter da;
SqlConnection con;
SqlCommand cmd = new SqlCommand();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
public DataBaseClass()
{
    //
    // TODO: Add constructor logic here
    //
}
public void ConnectDataBaseToInsert(string Query)
{
    con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\omar\Documents\Visual Studio 2005\WebSites\WebSite8\App_Data\Database.mdf;Integrated Security=True;User Instance=True");
    cmd.CommandText = Query;
    cmd.Connection = con;
    da = new SqlDataAdapter(cmd);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}
public DataSet ConnectDataBaseReturnDS(string Query)
{
    ds = new DataSet();
    con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\omar\Documents\Visual Studio 2005\WebSites\WebSite8\App_Data\Database.mdf;Integrated Security=True;User Instance=True");
    cmd.CommandText = Query;
    cmd.Connection = con;
    da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
    return ds;
}
public DataTable ConnectDataBaseReturnDT(string Query)
{
    dt = new DataTable();
    con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\omar\Documents\Visual Studio 2005\WebSites\WebSite8\App_Data\Database.mdf;Integrated Security=True;User Instance=True");
    cmd.CommandText = Query;
    cmd.Connection = con;
    da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    con.Open();
    cmd.ExecuteNonQuery();//error is here
    con.Close();
    return dt;
}

推荐答案

您的问题出在这行

字符串updateLastLogin =更新[用户] SET LastLogin =""+ System.DateTime.Now.ToString()+"''其中Id =''"+ Session [" UserId].ToString()+"" ;

您输入字符串的日期并不一定总是有效的

相反,您应该使用SQL命令和参数,而不是构建字符串.立即摆脱这种习惯!

在这里阅读

http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson06.aspx [ ^ ]

构建命令,添加参数.它将为您处理日期转换

另外,请尝试为此使用内置的SQL功能.您的命令应更像...
Your problem is with this line

string updateLastLogin = "Update [User] SET LastLogin=''" + System.DateTime.Now.ToString() + "'' where Id=''" + Session["UserId"].ToString() + "''";

The date you have put into the string isn''t going to always be valid

Instead, you should be using SQL commands and parameters rather than building strings. Get out of this habit now!

Have a read here

http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson06.aspx[^]

Build your command, add the parameters. It will take care of the date conversion for you

Also, try and use built in SQL functionality for this. Your command should read more like...
// 1. declare command object with parameter
SqlCommand cmd = new SqlCommand("UPDATE [User] SET LastLogon = GETDATE() where id= @UserId", conn);

// 2. define parameters used in command object
SqlParameter param  = new SqlParameter();
param.ParameterName = "@UserId";
param.Value = Session[UserId];

cmd.Parameters.Add(param);


// Execute the command


这篇关于代码plz中的错误检查此代码错误是:char数据类型到datetime数据类型的转换导致超出范围的datetime值.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆