我正在通过以下方法更新数据
class xxxxxx
{
public static string updatepersonformData(string staffID, string Firstname, string Lastname, string Address1,
string Address2,string Address3, string Town, string County, string Postcode, string HomePhone, string Mobile,
string PersonalEmail, string Reference, string BookingName, string Position_Id, string Role_Id, string Gender,
string Dob, string WorkPhone, string WorkEmail, formMain mf)
{
string result = xxxxxx.InsertData(string.Format(@"update staff set staff_Reference='{2}' staff_Firstname = '{3}',staff_Lastname='{4}' ,
staffPosition_Id='{5}',staffRole_Id='{6}', staff_Dob='{7}',staff_Gender='{8}' staff_Address1 = '{9}',
staff_Address2='{10}',staff_Address3 ='{11}' staff_Town ='{12}',staff_County = '{13}',staff_Postcode='{14}',staff_HomePhone='{16}',
staff_WorkPhone ='{17}',staff_Mobile ='{18}',staff_PersonalEmail ='{19}',staff_WorkEmail='{20}',staff_BookingName='{21}',WHERE staff_Id ={0}",
staffID, Reference, Firstname, Lastname, Position_Id, Role_Id, Dob, Gender, Address1, Address2, Address3, Town, County, Postcode, HomePhone, WorkPhone,
Mobile, PersonalEmail, WorkEmail, BookingName), mf);
return result;
}
}
我使用下面的
以主窗体调用此函数xxxxxx.updatepersonformData(tbCStaffHiddenId.Text, tbFirstname.Text, tbLastname.Text, tbAddress1.Text, tbAddress2.Text, tbAddress3.Text, tbTown.Text,
tbCounty.Text, tbPostcode.Text, tbHomePhone.Text, tbMobile.Text, tbPersonalEmail.Text, tbReference.Text, tbBookingName.Text, selectTextToId(cbPosition, aaPositions),
selectTextToId(cbRole, aaRoles), cbGender.Text, tbDob.Text.ToString(), tbWorkPhone.Text, tbWorkEmail.Text, mf);
但是当我更新这个时,我得到了这样的错误......
错误:“索引(基于零) 必须大于或等于零 并且小于参数的大小 列表。
确保你的方法参数在 正确的形式。
将字符串转换为日期时间时, 解析字符串以获取日期 在将每个变量放入之前 日期时间对象。
任何人都可以帮忙...
答案 0 :(得分:3)
你将20个参数传递给string.Format
,但你的格式摆放器从0
转到21
(所以你可能需要22个参数,或者你错误地指出了这个 - 例如我在那里看不到{15}
。重新检查字符串和参数,直到解决了格式错误。
您的查询中存在语法错误。该字段不应该是,
关键字之前的WHERE
。
(如果它们在你正在使用的任何系统/语言上可用,请使用绑定变量,并清理你的数据,否则会发生不好的事情 - 谷歌搜索“sql”。)
答案 1 :(得分:0)
对不起,User682417,但这是各种凌乱的。
我很确定你的参数索引错误了 - 你设置了
staff_Reference='{2}'
但它在索引1处 - 您是否可能需要递减每个索引?
另外,SQL注入。但其他人已经说过了。
此外,如果你正确地通过出生日期,你假设你的客户和你的数据库具有相同的日期格式 - 但欧洲人通常输入dd / mm / yyyy,而美国人经常输入mm /日/年。喜剧错误的重要来源,那一个。