如何修复“索引(从零开始)必须大于或等于零”的错误

时间:2019-04-16 05:28:47

标签: c# asp.net sql-server

我正在尝试编辑用户详细信息并尝试在数据库表中更新。因此,我使用用户名和密码登录,然后在重定向页面上获取了所有用户详细信息。但是我无法编辑详细信息,也无法更新数据库。我需要在哪里更改代码中的功能。 在数据库表字段中,DOB通过calendar.s值与LastDonated字段相同。

我尝试了以下代码来实现输出结果。

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\BBMS\BloodBank\App_Data\Database.mdf;Integrated Security=True");

SqlCommand cmd = new SqlCommand(string.Format("UPDATE DonorRegist SET FullName='{1}', Gender='{2}', DOB='{3}', BloodGroup='{4}',Weight='{5}', Email='{6}', Country='{7}', State='{8}',City='{9}', Address='{10}', Pincode='{11}', ContactNo='{12}', LastDonated='{13}',DonorPassword='{15}' WHERE UserName='{14}'", txtdonorname.Text, rblgender.SelectedValue, txtDOB.Text, ddlBG.SelectedValue, txtbodywt.Text, txtdonoremail.Text, ddlCountry.SelectedValue, ddlState.SelectedValue, ddlCity.SelectedValue, txtdonoradd.Text, txtpin.Text, txtdonorcontact.Text, txtlastdonate.Text, txtUserName.Text, txtPassword.Text), con);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

我希望输出,因为当我编辑某些字段值时,应该在相应的数据库表中对其进行更新。

1 个答案:

答案 0 :(得分:0)

您的问题是String.Format希望您从0开始作为索引:

string.Format("UPDATE DonorRegist SET FullName='{0}' ...", conn);

但是您可以使用字符串插值来简化它:

new SqlCommand($"UPDATE DonorRegist SET FullName='{txtdonorname.Text}', ...", conn);

甚至更好-如果您将使用sql参数-这样您就可以避免SQL注入!

cmd = new SqlCommand($"UPDATE DonorRegist SET FullName=@donorName, ...", conn);
cmd.Parameters.Add("@donorName", SqlDbType.String);
cmd.Parameters["@ID"].Value = txtdonorname.Text;

最后-最后的建议是使用using-避免忘记处理已使用的资源,例如-SqlConnection