C#ASP Web Form Logic

时间:2017-12-21 02:11:03

标签: c# asp.net

有人能告诉我我做错了什么吗?我试图以多种不同的方式实现这一目标,但却无法做到。如果不添加参数,表单就会运行,但我需要参数,这样我就可以更新记录,如果这样评估的话。我可能会偏离轨道,所以非常感谢任何帮助。

例如,如果输入产品代码且已经没有日期,则表单应使用当前日期/时间更新日期。如果产品代码确实已有日期,则应通知用户产品已发货,否则告知用户产品不在数据库中。

通过查询是否存在产品代码并且日期为空进行评估。如果评估结果为true,则应使用日期列中的当前时间戳更新该产品代码。如果评估结果为false,则会检查表中是否存在产品代码。如果确实如此且日期列不为空,则报告产品已经发货,否则报告该产品在数据库中不存在。

没有以下参数,它运行正常,提供正确的响应,但当然,它不会调用更新记录。

command2.Parameters.AddWithValue("@Value1", TextBox1.Text);
command2.Parameters.AddWithValue("@Value2", DateTime.Now);

添加了这些参数后,我收到一条错误,指出“当前上下文中不存在名称'command2'。但是,我只得到这个错误。抱歉,如果我的代码不合适。感谢向你求助!

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private string GetConnectionString()
    {
        return ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        using (SqlConnection connection = new SqlConnection(GetConnectionString()))
        {
            try
            {
                connection.Open();

                string sql = @"SELECT PRODUCT_ID from PRODUCTS where PRODUCT_ID = " + TextBox1.Text + " and DATE is null";

                using(SqlCommand command = new SqlCommand(sql, connection))
                {
                    using(SqlDataReader reader = command.ExecuteReader())
                    {
                        if(reader.HasRows)
                        {
                            string sql2 = @"UPDATE [products] SET date=@Value2 where PRODUCT_ID=@Value1";
                            using (SqlCommand command2 = new SqlCommand(sql2, connection))
                                command2.Parameters.AddWithValue("@Value1", TextBox1.Text);
                                command2.Parameters.AddWithValue("@Value2", DateTime.Now);
                            pageBody.Attributes.Add("bgcolor", "#9aff8e");
                            Label1.Text = "Item " + TextBox1.Text + " Recorded!";
                            TextBox1.Text = "";
                        }
                        else
                        {
                            reader.Close();
                            string sql3 = @"SELECT PRODUCT_ID from PRODUCTS where PRODUCT_ID = " + TextBox1.Text + "";

                            using(SqlCommand command3 = new SqlCommand(sql3, connection))
                            {
                                using(SqlDataReader reader2 = command3.ExecuteReader())
                                {
                                    if (reader2.HasRows)
                                    {
                                        pageBody.Attributes.Add("bgcolor", "#fbff8e");
                                        Label1.Text = "Item " + TextBox1.Text + " Already Shipped!";
                                        TextBox1.Text = "";
                                    }
                                    else
                                    {
                                        pageBody.Attributes.Add("bgcolor", "#ff8e8e");
                                        Label1.Text = "Item " + TextBox1.Text + " Not Found!";
                                        TextBox1.Text = "";
                                    }
                                }
                            }
                        }
                    }
                }
            }
            finally
            {
                if(connection.State != ConnectionState.Closed)
                {
                    connection.Close();
                }
            }
        }
    }

}

2 个答案:

答案 0 :(得分:1)

cursor.copy_expert()

忘了你的括号。

答案 1 :(得分:1)

将参数赋值放在括号内,不要忘记调用execute方法。

using (var command2 = new SqlCommand(sql2, connection)) 
{
    command2.Parameters.AddWithValue("@Value1", TextBox1.Text);
    command2.Parameters.AddWithValue("@Value2", DateTime.Now);
    command2.ExecuteNonQuery();
}