首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免在数据库中插入不需要的值?

如何避免在数据库中插入不需要的值?
EN

Stack Overflow用户
提问于 2015-05-11 14:36:51
回答 4查看 120关注 0票数 0

我只想插入选定的值,但当我保存它时,会插入数据库中的所有值。

在上面的数据库中的subject列中,我只想要在我的数据库中有faculty.But的主题,所有主题都是插入的。

我使用boundfield作为GridView中的subject列。到目前为止我的代码`

代码语言:javascript
运行
复制
<asp:GridView ID="Gvassignsubject" runat="server" AutoGenerateColumns="False" OnRowDataBound="Gvassignsubject_RowDataBound">
        <Columns>
            <asp:BoundField DataField="Subject" HeaderText="subject" SortExpression="subject" />
            <asp:TemplateField HeaderText ="Faculty">
                <ItemTemplate>
                    <asp:Label ID ="lblfaculty" runat="server" Text='<%%# Eval("facultyname") %>>' Visible="false"/>
                    <asp:DropDownList ID="ddlfaculty" runat="server"></asp:DropDownList>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Set Hour">
                <ItemTemplate>
                     <asp:TextBox ID="txthour" runat="server"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
             </Columns>
    </asp:GridView>`


 protected void btnsubmit_Click(object sender, EventArgs e)
    {
        using (SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        {
            foreach (GridViewRow r in Gvassignsubject.Rows)
            {
                for (int i = 0; i < Gvassignsubject.Rows.Count; i++)
                {
                    string batch = ddlbatches.SelectedValue;
                    string subject = r.Cells[0].Text;
                    DropDownList ddlfaculty = (DropDownList)Gvassignsubject.Rows[i].FindControl("ddlfaculty");
                    TextBox txthour = (TextBox)Gvassignsubject.Rows[i].FindControl("txthour");
                    string facultyname = ddlfaculty.SelectedValue;
                    string sethour = txthour.Text;
                    con2.Open();
                    SqlCommand cmd = new SqlCommand("insert into assign (batch,facultyname,sethour,subject)values(@batch,@facultyname,@sethour,@subject)", con2);
                    cmd.Parameters.AddWithValue("@batch", batch);
                    cmd.Parameters.AddWithValue("@subject", subject);
                    cmd.Parameters.AddWithValue("@facultyname", facultyname);
                    cmd.Parameters.AddWithValue("@sethour", sethour);
                    cmd.Connection = con2;
                    cmd.ExecuteNonQuery();
                    con2.Close();
                }
            }
        }
    }
EN

回答 4

Stack Overflow用户

发布于 2015-05-11 14:41:32

它添加所有的行,因为你没有标准;

代码语言:javascript
运行
复制
    for (int i = 0; i < Gvassignsubject.Rows.Count; i++)
    {

        DropDownList ddlfaculty = (DropDownList)Gvassignsubject.Rows[i].FindControl("ddlfaculty");
        string facultyname = ddlfaculty.SelectedValue;

        if (!string.Equals(ddlfaculty.SelectedValue, "Please Select"))
        {
            string batch = ddlbatches.SelectedValue;
            string subject = r.Cells[0].Text;
            TextBox txthour = (TextBox)Gvassignsubject.Rows[i].FindControl("txthour");
            string sethour = txthour.Text;
            con2.Open();
            SqlCommand cmd = new SqlCommand("insert into assign (batch,facultyname,sethour,subject)values(@batch,@facultyname,@sethour,@subject)", con2);
            cmd.Parameters.AddWithValue("@batch", batch);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@facultyname", facultyname);
            cmd.Parameters.AddWithValue("@sethour", sethour);
            cmd.Connection = con2;
            cmd.ExecuteNonQuery();
            con2.Close();
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2015-05-11 14:42:08

我相信您必须将默认选择列表项的值设置为null,并在您的for循环中检查它:

for (int i = 0; i < Gvassignsubject.Rows.Count; i++) { if(!string.IsNullOrEmpty(ddlfaculty.SelectedValue)) { ... } }

票数 0
EN

Stack Overflow用户

发布于 2015-05-11 14:46:29

您可以在subject字段中添加一个条件来检查值是否存在。您可以像下面这样做:

if(facultyname !="" && facultyname !="Please Select") { SqlCommand cmd = new SqlCommand("insert into assign (batch,facultyname,sethour,subject)values(@batch,@facultyname,@sethour,@subject)", con2); cmd.Parameters.AddWithValue("@batch", batch); cmd.Parameters.AddWithValue("@subject", subject); cmd.Parameters.AddWithValue("@facultyname", facultyname); cmd.Parameters.AddWithValue("@sethour", sethour); cmd.Connection = con2; cmd.ExecuteNonQuery(); }

这是在考虑这样一种条件,即dropdown具有与其文本相同的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30161004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档