【问题标题】:ORA-01008: not all variables bound - ASP.net Web applicationORA-01008: 并非所有变量都绑定 - ASP.net Web 应用程序
【发布时间】:2019-07-01 16:31:07
【问题描述】:

当我尝试使用 GridView 页脚模板将数据插入到 oracle 数据库中以将数据插入到 oracle 数据库时,我在插入查询中收到此“ORA-01008:并非所有变量绑定”错误,我在服务器上测试了查询它工作得很好,但是当我尝试运行应用程序并使用添加按钮执行查询时,它会显示错误

**网格视图代码正在使用模板字段,因此我可以编辑网格视图页脚模板**

<asp:GridView ID="gvmb"  runat="server" AutoGenerateColumns="False"  BackColor="#DEBA84"  BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" Width="60%" style="margin-left: 350px" Height="226px" ShowFooter="True" OnRowCommand="gvmb_RowCommand" DataKeyNames="member_id" ShowHeaderWhenEmpty="True">
                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
                <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
                <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                <SortedAscendingCellStyle BackColor="#FFF1D4" />
                <SortedAscendingHeaderStyle BackColor="#B95C30" />
                <SortedDescendingCellStyle BackColor="#F1E5CE" />
                <SortedDescendingHeaderStyle BackColor="#93451F" />
                <Columns>
                    <asp:TemplateField HeaderText="id">
                        <ItemTemplate>
                            <asp:Label text='<%# Eval("member_id") %>' runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="member" text='<%# Eval("member_id") %>' runat="server">

                            </asp:TextBox>
                        </EditItemTemplate>
                        <FooterTemplate>
                                     <asp:TextBox ID="member_idfooter"  runat="server">

                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <asp:Label text='<%# Eval("user_name") %>' runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="uname" text='<%# Eval("user_name") %>' runat="server">

                            </asp:TextBox>
                        </EditItemTemplate>
                         <FooterTemplate>
                                     <asp:TextBox ID="user_namefooter" runat="server">

                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="address">
                        <ItemTemplate>
                            <asp:Label text='<%# Eval("address") %>' runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="addres" text='<%# Eval("address") %>' runat="server">

                            </asp:TextBox>
                        </EditItemTemplate>
                         <FooterTemplate>
                                     <asp:TextBox ID="addressfooter" runat="server">

                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Email">
                        <ItemTemplate>
                            <asp:Label text='<%# Eval("email_address") %>' runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="email" text='<%# Eval("email_address") %>' runat="server">

                            </asp:TextBox>
                        </EditItemTemplate>
                         <FooterTemplate>
                                     <asp:TextBox ID="email_addressfooter" runat="server">

                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="password">
                        <ItemTemplate>
                            <asp:Label text='<%# Eval("password") %>' runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="pass" text='<%# Eval("password") %>' runat="server">

                            </asp:TextBox>
                        </EditItemTemplate>
                         <FooterTemplate>
                                     <asp:TextBox ID="passwordfooter" runat="server">

                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="mobile number">
                        <ItemTemplate>
                            <asp:Label text='<%# Eval("mob_number") %>' runat="server"></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="mob" text='<%# Eval("mob_number") %>' runat="server">

                            </asp:TextBox>
                        </EditItemTemplate>
                         <FooterTemplate>
                                     <asp:TextBox ID="mob_numberfooter" runat="server">

                            </asp:TextBox>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:LinkButton ID="edit" runat="server" CommandName="edit" ToolTip="Edit">Edit</asp:LinkButton>
                              <asp:LinkButton ID="delete" runat="server" CommandName="delete" ToolTip="Delete">Delete</asp:LinkButton>

                        </ItemTemplate> 

                        <FooterTemplate>
                             <asp:LinkButton ID="add" runat="server" CommandName="add" ToolTip="add">add</asp:LinkButton>

                        </FooterTemplate>
                    </asp:TemplateField>

                </Columns>
            </asp:GridView>
            <br />
            <asp:Label Text="" ID="lblsuccess" runat="server" ForeColor="Green"></asp:Label>
            <br />
            <asp:Label Text="" ID="lblerror" runat="server" ForeColor="red"></asp:Label>
    </div>

包含插入事件的 C# 代码我在 add.ExcuteNonQuery() 方法中遇到错误

 if (e.CommandName.Equals("add"))
            {
                coon.Open();
                string query = "INSERT INTO members (member_id, user_name,address ,mob_number,email_address,password ) VALUES (:member_id, :user_name,:address ,:mob_number,:email_address,:password)";
                OleDbCommand add = new OleDbCommand(query, coon);
                add.Parameters.AddWithValue(":member_id", (gvmb.FooterRow.FindControl("member_idfooter") as TextBox).Text.Trim());
                add.Parameters.AddWithValue(":user_name", (gvmb.FooterRow.FindControl("user_namefooter") as TextBox).Text.Trim());
                add.Parameters.AddWithValue(":address", (gvmb.FooterRow.FindControl("addressfooter") as TextBox).Text.Trim());
                add.Parameters.AddWithValue(":mob_number", (gvmb.FooterRow.FindControl("mob_numberfooter") as TextBox).Text.Trim());
                add.Parameters.AddWithValue(":email_address", (gvmb.FooterRow.FindControl("email_addressfooter") as TextBox).Text.Trim());
                add.Parameters.AddWithValue(":password", (gvmb.FooterRow.FindControl("passwordfooter") as TextBox).Text.Trim());

                add.ExecuteNonQuery();
                fillmembers();
                lblsuccess.Text = "New Recored Added";
                lblerror.Text = "";
                coon.Close();
            }

【问题讨论】:

  • 我相信正确的语法在添加参数时使用@,尝试更改为:add.Parameters.AddWithValue("@member_id", ....
  • 我使用的是 Oracle 而不是 SQL,所以参数应该使用:not @ i think

标签: c# asp.net oracle


【解决方案1】:

解决了我刚刚将查询中的 : 参数更改为 ?它起作用了,我猜参数的顺序有问题

INSERT INTO members (member_id, user_name,address ,mob_number,email_address,password) VALUES (?, ?,?,?,?,?)

【讨论】:

    【解决方案2】:

    如果您可以改用 OracleCommand,则可以使用特定于 Oracle 的 OracleParamater 来实现此目的。

    cmd.Parameters.Add(new OracleParameter("client", client));
    

    根据您拥有的命名空间,Oracle.DataAccess.Client 或 System.Data.OracleClient,您可以使用 AddWithValue 版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-31
      • 2021-12-11
      • 1970-01-01
      • 2011-09-22
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多