c# - ORA-01008: 并非所有变量都绑定 - ASP.net Web 应用程序
问题描述
当我尝试使用 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();
}
解决方案
如果您可以改用 OracleCommand,则可以使用特定于 Oracle 的 OracleParamater 来实现此目的。
cmd.Parameters.Add(new OracleParameter("client", client));
根据您拥有的命名空间,Oracle.DataAccess.Client 或 System.Data.OracleClient,您可以使用 AddWithValue 版本。
推荐阅读
- rabbitmq - rabbitmq-message-deduplication 插件
- google-calendar-api - Google 日历中的“主要”calendarId 和其他 calendarId 有什么区别?
- xpath - XPath - 选择带有内部文本的元素,甚至是子元素的文本
- r - 将具有部分匹配名称的列值合并到 R 中的一个分号分隔的字段中
- here-api - HERE 地图自动建议在离线时不会从下载的地图包返回预期结果
- javascript - 新代码,遇到此错误“未捕获的类型错误:无法读取 null 的属性‘值’”
- search - 防止 Issuu Find Widget 的搜索栏被隐藏
- c - C中客户端/服务器通信期间的奇怪字符
- java - 如果可能,浮点原语返回 null,如果数据库中的值为 null,则返回特定值
- r - 无法将 `spec_tbl_df/tbl_df/tbl/data.frame` 对象转换为函数