不能在C#ASP.NET中绑定多部分标识符“ TextBox1.Text”?
|
我正在做一个训练实习项目;为了降低基础知识,我的处理程序目前明确禁止参数化和面向安全的编码。就是说,我的主页上有一个带有超链接字段的gridview,该链接将用户带到一个页面,用户可以在其中编辑文本框中的行数据。该行由\“ ProductId \”列显示,因为该行是自动递增且唯一的。值显示完美,所以我知道查询字符串很好,但是当我尝试使用button事件进行更新时,出现一条错误消息,内容为
不能绑定多部分标识符\“ TextBox1.Text \”。
对于我所有的文本框。我的代码如下。我想念什么?这是我的第一个牛仔竞技表演,因此对于有经验的眼睛来说,它很可能是基本的且显而易见的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class ViewEdit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string x = Request.QueryString[\"ProductId\"];
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[\"MyConnectionString\"].ConnectionString;
string editQuery = \"SELECT CustId, CustName, SicNaic, CustCity, CustAdd, CustState, CustZip, BroName, BroId, BroAdd, BroCity, BroState, BroZip, EntityType, Coverage, CurrentCoverage, PrimEx, Retention, EffectiveDate, Commission, Premium, Comments FROM ProductInstance WHERE ProductId =\" + x;
using (SqlConnection editConn = new SqlConnection(connectionString))
{
editConn.Open();
using (SqlCommand command = new SqlCommand(editQuery, editConn))
{
SqlDataReader dr = command.ExecuteReader();
dr.Read();
TextBox1.Text = dr.GetInt32(0).ToString();
TextBox2.Text = dr.GetString(1);
TextBox3.Text = dr.GetString(2);
TextBox4.Text = dr.GetString(3);
TextBox5.Text = dr.GetString(4);
TextBox6.Text = dr.GetString(5);
TextBox7.Text = dr.GetInt32(6).ToString();
TextBox8.Text = dr.GetString(7);
TextBox9.Text = dr.GetInt32(8).ToString();
TextBox10.Text = dr.GetString(9);
TextBox11.Text = dr.GetString(10);
TextBox12.Text = dr.GetString(11);
TextBox13.Text = dr.GetInt32(12).ToString();
TextBox14.Text = dr.GetString(13);
TextBox15.Text = dr.GetInt32(14).ToString();
TextBox16.Text = dr.GetInt32(15).ToString();
TextBox17.Text = dr.GetInt32(16).ToString();
TextBox18.Text = dr.GetInt32(17).ToString();
TextBox19.Text = dr.GetDateTime(18).ToString();
TextBox20.Text = dr.GetInt32(19).ToString();
TextBox21.Text = dr.GetInt32(20).ToString();
TextBox22.Text = dr.GetString(21);
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string x = Request.QueryString[\"ProductId\"];
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[\"MyConnectionString\"].ConnectionString;
string updateQuery = \"UPDATE ProductInstance SET CustId = TextBox1.Text, CustName = TextBox2.Text, SicNaic =TextBox3.Text, CustCity = TextBox4.Text, CustAdd = TextBox5.Text, CustState = TextBox6.Text, CustZip = TextBox7.Text, BroName = TextBox8.Text, BroId = TextBox9.Text, BroAdd = TextBox10.Text, BroCity = TextBox11.Text, BroState = TextBox12.Text, BroZip = TextBox13.Text, EntityType = TextBox14.Text, Coverage = TextBox15.Text, CurrentCoverage = TextBox16.Text, PrimEx = TextBox17.Text, Retention = TextBox18.Text, EffectiveDate = TextBox19.Text, Commission = TextBox20.Text, Premium = TextBox21.Text, Comments = TextBox22.Text WHERE ProductId =\" + x;
using (SqlConnection updateConn = new SqlConnection(connectionString))
{
updateConn.Open();
{
using (SqlCommand command = new SqlCommand(updateQuery, updateConn))
{
command.ExecuteNonQuery();
}
}
}
}
}
没有找到相关结果
已邀请:
3 个回复
锹缄
控件的
属性的值作为字符串传递给查询,而不是\“ TextBox.Text \”:
注意: 如果\“ Text \”属性的值是一个字符串,则必须像上面的示例一样在值的两侧放置一个
。
惜堡沁戚
梆晨灸碾
将不会被替换。 您将必须使用SQL参数或使用字符串生成器或string.Format来生成查询字符串。
确保您生成有效的SQL Update查询。如果Textbox4.Text是字符串,则类似于ѭ8的操作将失败。您将必须在需要的地方加上报价
即使您不能使用参数或ORM,我也建议您为TextboxN以外的其他文本框命名。 此外,如果您使用的是网格视图,我不知道这段代码将如何工作?您只填充一行?