' 输入字符串格式不正确.' 插入日期,并在 asp.net 中设置数据

本文关键字:asp net 置数据 并在 插入 字符串 输入 格式 不正确 日期 | 更新日期: 2023-09-27 17:57:02

我将在 Asp.net 中创建移动商店网站

我在 asp.net 中创建插入页面,并使用数据集插入产品。

当我点击用于添加到数据库的按钮时. 给我看这个错误

我如何解决它?

这是我的数据库

 protected void Button1_Click(object sender, EventArgs e)
{
    PersianCalendar pc = new PersianCalendar();
    String datetime=pc.GetYear(DateTime.Now) + "/" + pc.GetMonth(DateTime.Now) + "/" + pc.GetDayOfMonth(DateTime.Now);
    String time = DateTime.Now.Hour + ":" + DateTime.Now.Minute;

    DataSet ds = new DataSet();
    DataSetTableAdapters.tblproductTableAdapter da = new DataSetTableAdapters.tblproductTableAdapter();

   da.InsertQuery(int.Parse(txtprotitle.Text), txtprotitle.Text, txtexplain.Text, decimal.Parse(txtproprice.Text), txtprolink.Text, Session["userid"].ToString(), datetime, time);
    Response.Redirect("Default.aspx");
}

这是我的数据集

INSERT INTO [tblproduct] ([pid], [title], [explain], [price], [link], [uid], [date], [time]) VALUES (@pid, @title, @explain, @price, @link, @uid, @date, @time)

' 输入字符串格式不正确.' 插入日期,并在 asp.net 中设置数据

你应该像这样实现:

protected void Button1_Click(object sender, EventArgs e)
{
PersianCalendar pc = new PersianCalendar();
String datetime=pc.GetYear(DateTime.Now) + "/" + pc.GetMonth(DateTime.Now) + "/" + pc.GetDayOfMonth(DateTime.Now);
String time = DateTime.Now.Hour + ":" + DateTime.Now.Minute;

DataSet ds = new DataSet();
DataSetTableAdapters.tblproductTableAdapter da = new DataSetTableAdapters.tblproductTableAdapter();
int pid;
decimal gheymat;
if(int.TryParse(txtprotitle.Text, out pid) &&  decimal.TryParse(txtproprice.Text, out gheymat))
{
da.InsertQuery(pid, txtprotitle.Text, txtexplain.Text, gheymat, txtprolink.Text, Session["userid"].ToString(), datetime, time);
Response.Redirect("Default.aspx");}
else{
//error with parsing
}
}

确保 Session["userid"] 不为空

从堆栈跟踪中,您的问题不在于日期,而在于这一部分:

int.Parse(txtprotitle.Text)

您需要仔细检查txtprotitle并确保它是一个数字并且在 Int32 范围内。一种安全的处理方法(除了非常推荐的客户端验证)

int title;
if(int.TryParse(txtprotitle.Text, out title) == false)
{
    // failed to convert - Do Something about it.
}

然后:

da.InsertQuery(title, txtprotitle.Text, 
               txtexplain.Text, decimal.Parse(txtproprice.Text),                            
               txtprolink.Text, Session["userid"].ToString(), datetime, time);

您可能需要对txtproprice.Text执行相同的操作,但使用 decimal.TryParse .