簡體   English   中英

在C#中顯示MS Access數據庫時出錯

[英]Error in displaying MS Access Database in C#

我想我在這里是一個不包含很多細節的人,對此我感到很抱歉,所以這次我將嘗試對我的問題提供更多信息。

注意:如果您要問為什么我不使用異常處理,那是因為我想在處理異常之前使用代碼。

最近,我們被教導使用MS Access創建基本數據庫。 所以我的問題是這個。 使用以下代碼將我的數據庫顯示到我的listView中:

private void Form1_Load(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source =AssetManagement.accdb");//accessItems is the database file 
        System.Data.OleDb.OleDbDataAdapter adpt = new System.Data.OleDb.OleDbDataAdapter("select * from tbl_Assets", con); 
        adpt.Fill(ds); 
        DataTable table = ds.Tables[0];

        foreach (DataRow row in table.Rows)
        {
            lstViewListOfRooms.Items.Add(row[1].ToString()).SubItems.Add(row[2].ToString());
            for (int i = 0; i < lstViewListOfRooms.Items.Count; i++)
            {
                lstViewListOfRooms.Items[i].SubItems.Add(row[3].ToString());
                lstViewListOfRooms.Items[i].SubItems.Add(row[4].ToString());
            }
        }

這用於以不同的形式為我的數據庫添加新項目:

private void btnSaveAddAsset_Click(object sender, EventArgs e)
    {


        if (txtAddFloor.Text == "" || txtAddRoom.Text == "" || string.IsNullOrWhiteSpace(txtAddFloor.Text) == true || string.IsNullOrWhiteSpace(txtAddRoom.Text) == true)
        {
            MessageBox.Show("Please enter valid information", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
        }
        else
        {
            ths.lstViewListOfRooms.Items.Add(txtAddFloor.Text).SubItems.Add(txtAddRoom.Text);
            for (int i = 0; i < ths.lstViewListOfRooms.Items.Count; i++)
            {
                String date = "dd/MM/yyyy - HH:mm:ss";
                ths.lstViewListOfRooms.Items[i].SubItems.Add(txtAddDescriptionDetail.Text);
                ths.lstViewListOfRooms.Items[i].SubItems.Add(DateTime.Now.ToString(date));
                con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source =AssetManagement.accdb");
                Ds = new DataSet();

                string query = "INSERT INTO tbl_Assets(asset_floor, asset_room, asset_description, asset_createdOn)" + " VALUES (" + txtAddFloor.Text + "," + txtAddRoom.Text + ", '" + txtAddDescriptionDetail.Text + "' , '" + DateTime.Now.ToString(date) + "'" + ") ";
                con.Open();
                Da = new OleDbDataAdapter(query, con);
                Da.Fill(Ds, "tbl_Assets");
                con.Close();
                this.Close();
            }
        }
    }

問題是:每次添加一個項目時,不僅增加了一個項目,而且每次添加的倍數越來越多。 如您在此屏幕截圖中所見: 在此處輸入圖片說明 在此處輸入圖片說明

每次保存時, 都會由於以下代碼而再次添加每個現有房間for (int i = 0; i < ths.lstViewListOfRooms.Items.Count; i++)

您應該只插入新的,並更新(如果需要)現有的。 此代碼將執行以下操作:

private void btnSaveAddAsset_Click(object sender, EventArgs e)
{
    if (txtAddFloor.Text == "" || txtAddRoom.Text == "" || string.IsNullOrWhiteSpace(txtAddFloor.Text) == true || string.IsNullOrWhiteSpace(txtAddRoom.Text) == true)
    {
        MessageBox.Show("Please enter valid information", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
    }
    else
    {
        ths.lstViewListOfRooms.Items.Add(txtAddFloor.Text).SubItems.Add(txtAddRoom.Text);

        String date = "dd/MM/yyyy - HH:mm:ss";
        ths.lstViewListOfRooms.Items[lstViewListOfRooms.Items.Count - 1].SubItems.Add(txtAddDescriptionDetail.Text);
        ths.lstViewListOfRooms.Items[lstViewListOfRooms.Items.Count - 1].SubItems.Add(DateTime.Now.ToString(date));
        con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source =AssetManagement.accdb");
        Ds = new DataSet();

        string query = "INSERT INTO tbl_Assets(asset_floor, asset_room, asset_description, asset_createdOn)" + " VALUES (" + txtAddFloor.Text + "," + txtAddRoom.Text + ", '" + txtAddDescriptionDetail.Text + "' , '" + DateTime.Now.ToString(date) + "'" + ") ";
        con.Open();
        Da = new OleDbDataAdapter(query, con);
        Da.Fill(Ds, "tbl_Assets");
        con.Close();
        this.Close();

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM