【问题标题】:How to fix "Index (zero based) must be greater than or equal to zero" error [duplicate]如何修复“索引(基于零)必须大于或等于零”错误[重复]
【发布时间】:2019-09-06 03:22:46
【问题描述】:

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

我已经尝试了下面的代码来实现我的输出结果。

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();

我希望输出在我编辑某些字段值时应该在相应的数据库表中得到更新。

【问题讨论】:

    标签: c# asp.net sql-server


    【解决方案1】:

    您的问题是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

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 2011-07-16
      • 2018-05-24
      • 2021-08-13
      • 2013-09-26
      • 2012-12-29
      • 2011-11-20
      • 2011-12-19
      • 1970-01-01
      相关资源
      最近更新 更多