Все еще есть проблемы с gridview и обновлением для моего проекта базы данных - PullRequest
0 голосов
/ 09 марта 2019

Я хочу обновить количество голов, забитых игроком, поэтому, если он забил гол, я хочу обновить его количество голов ... Я получил ошибку в своем коде, и я не знаю, как это сделатьпочини это.Может кто-нибудь помочь мне исправить это, пожалуйста?

Мой код:

        string connectionStr = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\SoccerDataBase.mdb";
    using (OleDbConnection sqlCon = new OleDbConnection(connectionStr))
    {
        sqlCon.Open();
        string queryStr = "SELECT Achievement FROM SoccerAchievements WHERE UserID=@AchNums";
        OleDbCommand sqlCmd = new OleDbCommand(queryStr, sqlCon);
        sqlCmd.Parameters.AddWithValue("@AchNums", (SoccerTable.FooterRow.FindControl("AchNums") as TextBox).Text.Trim());
        OleDbDataAdapter dataAdapt = new OleDbDataAdapter(queryStr, sqlCon);
        DataSet ds = new DataSet();
        dataAdapt.Fill(ds, "SoccerAchievement");
        DataRow row = ds.Tables["SoccerAchievement"].Rows[0];
        int a = int.Parse(row[3].ToString());
        a = a + int.Parse("@AchNums");
        string query = "UPDATE SoccerAchievements SET Achievement= '" + a + "' WHERE UserID= @AchNums";
        sqlCmd.ExecuteNonQuery();
    }

Мой HTML-код GridView:

<asp:GridView ID="SoccerTable" runat="server" AutoGenerateColumns="False" 
        BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" 
        CellPadding="3" DataSourceID="AccessDataSource1">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="קוד שחקן" InsertVisible="False" 
                SortExpression="ID" />
            <asp:BoundField DataField="Team" HeaderText="קבוצות" SortExpression="Team" />
            <asp:BoundField DataField="Players" HeaderText="שחקנים" 
                SortExpression="Players" />
                <asp:TemplateField HeaderText="הישגים">
                <FooterTemplate>
                <asp:TextBox ID="AchNums" runat="server"></asp:TextBox>
                </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                <ItemTemplate>
                 <asp:Button class = "AddButton" ID="AddButton" runat="server" onclick="AddButton_Click" Text="עדכן" />
                </ItemTemplate>
                </asp:TemplateField>
        </Columns>
        <FooterStyle BackColor="White" ForeColor="#000066" />
        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
        <RowStyle ForeColor="#000066" />
        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#007DBB" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#00547E" />
    </asp:GridView>

Моя ошибка: в позиции 0 нет строки. Изображение:

enter image description here

Мои данные SoccerAchievements

Изображение: enter image description here

Пожалуйста, помогите мне, ребята:)

1 Ответ

1 голос
/ 09 марта 2019

Замените это OleDbDataAdapter dataAdapt = new OleDbDataAdapter(queryStr, sqlCon); на OleDbDataAdapter dataAdapt = new OleDbDataAdapter(sqlCmd);

Однако вы можете снова столкнуться с ошибкой в ​​своем int.parse коде. Пожалуйста, исправьте это также.

...