有人能告诉我我做错了什么吗?我试图以多种不同的方式实现这一目标,但却无法做到。如果不添加参数,表单就会运行,但我需要参数,这样我就可以更新记录,如果这样评估的话。我可能会偏离轨道,所以非常感谢任何帮助。
例如,如果输入产品代码且已经没有日期,则表单应使用当前日期/时间更新日期。如果产品代码确实已有日期,则应通知用户产品已发货,否则告知用户产品不在数据库中。
通过查询是否存在产品代码并且日期为空进行评估。如果评估结果为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();
}
}
}
}
}
答案 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();
}