2013-08-23 76 views
0

我不断收到一个OleDbException:“没有给出一个或多个必需参数的值” - 不是非常具体。SqlDataSource InsertCommand缺少必需参数

我有没有运气找到我的问题在线解决方案。我已经尝试了许多不同的东西,例如不在表单中声明参数,并在运行时在代码后面创建它们。

这里是我的丑陋的代码:

<asp:sqldatasource ID="datasource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
    SelectCommand="SELECT [ID], [Test Data] AS Test_Data, [More Data] AS More_Data FROM [Main]" 
    UpdateCommand="UPDATE [Main] SET [Test Data][email protected], [More Data][email protected] WHERE [ID][email protected]" 
    InsertCommand="INSERT INTO [Main] ([ID], [Test Data], [More Data]) VALUES (@InsertID, @InsertTestData, @InsertMoreData)" 
    DeleteCommand="" > 
    <UpdateParameters> 
     <asp:ControlParameter Name="TestData" ControlId="updateTest" PropertyName="Text" /> 
     <asp:ControlParameter Name="MoreData" ControlId="updateMore" PropertyName="Text" /> 
     <asp:ControlParameter Name="InsertTestData" ControlId="insertTest" PropertyName="Text" /> 
     <asp:ControlParameter Name="InsertID" ControlId="insertIDD" PropertyName="SelectedValue" /> 
     <asp:ControlParameter Name="InsertMoreData" ControlId="insertMore" PropertyName="Text" /> 
     <asp:ControlParameter Name="ID" ControlId="DropDownList2" PropertyName="SelectedValue" /> 
    </UpdateParameters> 
</asp:sqldatasource> 

    <asp:GridView ID="GridView1" runat="server" AllowSorting="true" DataSourceID="datasource"></asp:GridView> 
    <br /> 
    <asp:DropDownList ID="insertIDD" DataSourceID="datasource" DataTextField="ID" runat="server" Font-Bold="False"></asp:DropDownList> 
    <asp:TextBox ID="insertTest" runat="server"></asp:TextBox> 
    <asp:TextBox ID="insertMore" runat="server"></asp:TextBox> 
    <asp:Button ID="Button1" runat="server" Text="Insert" OnClick="Insert" /> 
    <br /> 
    <asp:DropDownList ID="DropDownList2" runat="server" DataSourceID="datasource" DataTextField="ID" OnTextChanged="populateDrop" AutoPostBack="true"></asp:DropDownList> 
    <asp:TextBox ID="updateTest" runat="server"></asp:TextBox> 
    <asp:TextBox ID="updateMore" runat="server"></asp:TextBox> 
    <asp:Button ID="Button2" runat="server" Text="Update" OnClick="Update" /> 
    <br /> 
    <asp:Button ID="Button3" runat="server" Text="Delete" OnClick="Delete" />** 

和C#代码背后:

namespace WebApplication2 
{ 
public partial class WebForm1 : System.Web.UI.Page 
{ 
    DataView dv = new DataView(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     dv = (DataView)datasource.Select(DataSourceSelectArguments.Empty); 
     updateTest.Text = dv[0]["Test_Data"].ToString(); 
     updateMore.Text = dv[0]["More_Data"].ToString(); 
    } 

    protected void Insert(object sender, EventArgs e) 
    { 
     datasource.Insert(); 
    } 

    protected void Update(object sender, EventArgs e) 
    { 
     datasource.Update(); 
     updateTest.Text = ""; 
     updateMore.Text = ""; 
    } 

没有任何问题SELECT和更新工作。无论我尝试什么,我都无法使INSERT INTO命令变得快乐。我相信这是简单的,我失踪了,但任何帮助将不胜感激,谢谢!

+2

难道是因为你没有插入参数,你做尽管有更新参数。 – OneFineDay

+0

愚蠢我我知道我明白你的意思...请原谅我的新手 – Justin

回答

1

这是更新:

<UpdateParameters> 
    <asp:ControlParameter Name="TestData" ControlId="updateTest" PropertyName="Text" /> 
    <asp:ControlParameter Name="MoreData" ControlId="updateMore" PropertyName="Text" /> 
    <asp:ControlParameter Name="ID" ControlId="DropDownList2" PropertyName="SelectedValue" /> 
</UpdateParameters> 

,这是插入

<InsertParameters> 
<asp:ControlParameter Name="InsertTestData" ControlId="insertTest" PropertyName="Text" /> 
    <asp:ControlParameter Name="InsertID" ControlId="insertIDD" PropertyName="SelectedValue" /> 
    <asp:ControlParameter Name="InsertMoreData" ControlId="insertMore" PropertyName="Text" /> 
</InsertParameters> 

底:

<asp:sqldatasource ID="datasource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
SelectCommand="SELECT [ID], [Test Data] AS Test_Data, [More Data] AS More_Data FROM [Main]" 
UpdateCommand="UPDATE [Main] SET [Test Data][email protected], [More Data][email protected] WHERE [ID][email protected]" 
InsertCommand="INSERT INTO [Main] ([ID], [Test Data], [More Data]) VALUES (@InsertID, @InsertTestData, @InsertMoreData)" 
DeleteCommand="" > 
<UpdateParameters> 
    <asp:ControlParameter Name="TestData" ControlId="updateTest" PropertyName="Text" /> 
    <asp:ControlParameter Name="MoreData" ControlId="updateMore" PropertyName="Text" /> 
    <asp:ControlParameter Name="ID" ControlId="DropDownList2" PropertyName="SelectedValue" /> 
</UpdateParameters> 
<InsertParameters> 
<asp:ControlParameter Name="InsertTestData" ControlId="insertTest" PropertyName="Text" /> 
    <asp:ControlParameter Name="InsertID" ControlId="insertIDD" PropertyName="SelectedValue" /> 
    <asp:ControlParameter Name="InsertMoreData" ControlId="insertMore" PropertyName="Text" /> 
</InsertParameters> 
</asp:sqldatasource> 
相关问题