【问题标题】:No value given for one or more required parameters. vb没有为一个或多个必需参数指定值。 VB
【发布时间】:2016-07-28 13:18:01
【问题描述】:

好吧,我已经解决了之前提出的问题,将我的代码更改了三到四次,但仍然无法获得我正在处理的表单以将数据插入到我的表中。寻找有用的建议。

表格代码:

<div>
    <table align="center" width="200px" cellpadding="5px">
        <tr><td width="50px">Season:</td><td width="150px">
            <asp:DropDownList name="Season" ID="ddlSeason" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="Season" DataValueField="Season">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SeasonConnectionString %>" ProviderName="<%$ ConnectionStrings:SeasonConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_Season] ORDER BY [Season]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Game: </td><td>
            <asp:DropDownList name="Game" ID="ddlGameNumber" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource2" DataTextField="Game" DataValueField="Game">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:GameNumberConnectionString %>" ProviderName="<%$ ConnectionStrings:GameNumberConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_GameNumbers] ORDER BY [Game]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Team: </td><td>
            <asp:DropDownList name="Team" ID="ddlTeam" runat="server" Height="16px" Width="122px" AutoPostBack="True" DataSourceID="SqlDataSource3" DataTextField="Team" DataValueField="Team">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:TeamConnectionString %>" ProviderName="<%$ ConnectionStrings:TeamConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT * FROM [T_Teams] ORDER BY [Team]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Player: </td><td>
            <asp:DropDownList name="Player" ID="ddlPlayer" runat="server" Height="16px" Width="121px" AutoPostBack="True" DataSourceID="SqlDataSource4" DataTextField="Player" DataValueField="Player">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:PlayerConnectionString %>" ProviderName="<%$ ConnectionStrings:PlayerConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [Team], [Player] FROM [T_Passing] WHERE (([Season] = ?) AND ([Team] = ?)) ORDER BY [Player]">
                <SelectParameters>
                    <asp:ControlParameter ControlID="ddlSeason" Name="Season" PropertyName="SelectedValue" Type="String" />
                    <asp:ControlParameter ControlID="ddlTeam" Name="Team" PropertyName="SelectedValue" Type="String" />
                </SelectParameters>
            </asp:SqlDataSource>
            </td></tr>
        <tr><td>Atts: </td><td>
            <asp:DropDownList name="Atts" ID="ddlAtts" runat="server" DataSourceID="SqlDataSource5" DataTextField="Game" DataValueField="Game">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:AttsConnectionString %>" ProviderName="<%$ ConnectionStrings:AttsConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_Atts] ORDER BY [Game]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Comps: </td><td>
            <asp:DropDownList name="Comps" ID="ddlComps" runat="server" DataSourceID="SqlDataSource6" DataTextField="Comps" DataValueField="Comps">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource6" runat="server" ConnectionString="<%$ ConnectionStrings:CompletionsConnectionString %>" ProviderName="<%$ ConnectionStrings:CompletionsConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_Comps] ORDER BY [Comps]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Yards: </td><td>
            <asp:TextBox name="Yards" ID="txtYards" runat="server" Width="68px" Text="0"></asp:TextBox>
            </td></tr>
        <tr><td>TDs: </td><td>
            <asp:DropDownList name="TDs" ID="ddlTDs" runat="server" DataSourceID="SqlDataSource7" DataTextField="TDs" DataValueField="TDs">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource7" runat="server" ConnectionString="<%$ ConnectionStrings:TDConnectionString %>" ProviderName="<%$ ConnectionStrings:TDConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_TDs] ORDER BY [TDs]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Ints: </td><td>
            <asp:DropDownList name="Ints" ID="ddlInts" runat="server" DataSourceID="SqlDataSource8" DataTextField="Ints" DataValueField="Ints">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource8" runat="server" ConnectionString="<%$ ConnectionStrings:IntsConnectionString %>" ProviderName="<%$ ConnectionStrings:IntsConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_Ints] ORDER BY [Ints]"></asp:SqlDataSource>
            </td></tr>
        <tr><td>Long: </td><td>
            <asp:TextBox name="Longest" ID="txtLongest" runat="server" Width="67px" Text="0"></asp:TextBox>
            </td></tr>
        <tr><td colspan="2" align="center">
            <asp:Button ID="btnSubmit" runat="server" Text="Submit" />&nbsp;&nbsp;
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" />
            </td></tr>
    </table>
</div>

代码背后:

Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
    Dim season As String = Request.Form("Season")
    Dim game As String = Request.Form("Game")
    Dim team As String = Request.Form("Team")
    Dim player As String = Request.Form("Player")
    Dim atts As String = Request.Form("Atts")
    Dim comps As String = Request.Form("Comps")
    Dim yards As String = Request.Form("Yards")
    Dim tds As String = Request.Form("TDs")
    Dim ints As String = Request.Form("Ints")
    Dim longest As String = Request.Form("Longest")

    Dim objConnection As OleDbConnection = Nothing
    Dim objcmd As OleDbCommand = Nothing

    Dim sqlString As String
    Dim dbconn As OleDbConnection = Nothing

    dbconn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("~/App_Data/TCFLStatistics.accdb"))
    dbconn.Open()

    sqlString = "Insert into T_Passing (Season, Game, Team, Player, Atts, Comps, Yards, TDs, INTs, Longest) Values (?,?,?,?,?,?,?,?,?,?)"
    objcmd = New OleDbCommand(sqlString, dbconn)
    objcmd.Parameters.AddWithValue("@Season", ddlSeason.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Game", ddlGameNumber.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Team", ddlTeam.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Player", ddlPlayer.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Atts", ddlAtts.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Comps", ddlComps.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Yards", txtYards.Text)
    objcmd.Parameters.AddWithValue("@TDs", ddlTDs.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@INTs", ddlInts.SelectedValue.ToString)
    objcmd.Parameters.AddWithValue("@Longest", txtLongest.Text)
    objcmd.ExecuteNonQuery()

    dbconn.Close()
    MsgBox("Record submitted successfully!")

End Sub

【问题讨论】:

    标签: asp.net vb.net visual-studio webforms


    【解决方案1】:

    我找到了自己问题的答案!

    当我继续浏览许多类似的问题时,有人建议使用 Response.Write 命令显示 sql 字符串以确保它看起来正确。我插入了一个 Response.Write 命令来显示连接字符串和 sql 字符串以验证准确性。我仍然遇到同样的错误。然后我有了注释掉提交按钮代码的好主意。我再次运行代码并收到相同的错误消息。这告诉我错误不在我的提交代码中。

    我转到代码的表单部分,开始注释文本框和下拉列表,从末尾开始一次一个。我发现在这部分代码中创建了 sqldatasource 链接之后,我更改了表中的列标题:

    <asp:DropDownList name="Atts" ID="ddlAtts" runat="server" DataSourceID="SqlDataSource5" DataTextField="Game" DataValueField="Game">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:AttsConnectionString %>" ProviderName="<%$ ConnectionStrings:AttsConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [T_Atts] ORDER BY [Game]"></asp:SqlDataSource>
    

    一旦我在所有适用的代码部分将 Game 更改为 Atts,它就像一个魅力!

    感谢所有花时间阅读我的问题、提交答案或回答导致我找到解决方案的许多其他类似问题之一的人!

    【讨论】:

      【解决方案2】:

      我会尝试在您的查询文本中使用您的参数名称:

      sqlString = "Insert into T_Passing (Season, Game, Team, Player, Atts, Comps, Yards, TDs, INTs, Longest) Values (@Season,@Game,@Team,@Player,@Atts,@Comps,@Yards,@TDs,@INTs,@Longest)"
      

      【讨论】:

      • 好的,我提供的唯一另一件事是根据数据库中字段的数据类型检查参数的数据类型(目前都是字符串)。
      猜你喜欢
      • 2011-01-23
      • 2017-12-25
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多