簡體   English   中英

檢查數據庫中是否已經存在記錄

[英]Check if record already exists within the database

我有一個程序允許用戶輸入電影和有關該電影的詳細信息並將它們存儲在數據庫中。 我的數據庫顯示在我的 C# 程序中,用戶可以 select 行之一,該行中的信息將放入它對應的文本框中,例如標題將 Z34D1F91FB2E514B8576FAB1A7A 中的標題文本框和. 我想要做的是阻止用戶點擊提交按鈕並將相同的記錄放入數據庫中。

任何幫助,將不勝感激

提交按鈕:

private void btnSubmit_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(txtTitle.Text) || string.IsNullOrWhiteSpace(txtRunTime.Text)) 
            {
                MessageBox.Show("Fill in all the required fields"); 
            }
            else 
            {

                if (lstStatus.SelectedIndex == 0) 
                {
                    Status = "Watched"; 
                }
                else 
                {
                    Status = "Not Watched"; 
                }

                if (lstType.SelectedIndex == 0) 
                {
                    Type = "Movie"; 
                }
                else 
                {
                    Type = "TV Show";
                } 

                con.Open(); 
                SqlCommand cmd = new SqlCommand("insert into dbo.Movies(Title, Genre, RunTime, Type, Status) values('"+txtTitle.Text+"','"+txtGenre.Text+"','"+txtRunTime.Text+"','"+Type+"','"+Status+"')", con); 
                cmd.ExecuteNonQuery(); 
                MessageBox.Show("Data transferred into the database!"); 
                con.Close(); 

                txtTitle.Text = ""; 
                txtRunTime.Text = ""; /
            } 
        } 

選擇行時的代碼:

private void DataGridMovies_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if(DataGridMovies.CurrentRow.Index == DataGridMovies.Rows.Count - 1)
            {
                MessageBox.Show("Empty row selected"); // Display a message to the user
            }
            else
            {
                ID = Convert.ToInt32(DataGridMovies.Rows[e.RowIndex].Cells[0].Value.ToString());
                txtTitle.Text = DataGridMovies.Rows[e.RowIndex].Cells[1].Value.ToString();
                txtGenre.Text = DataGridMovies.Rows[e.RowIndex].Cells[2].Value.ToString();
                txtRunTime.Text = DataGridMovies.Rows[e.RowIndex].Cells[3].Value.ToString();
                if (DataGridMovies.Rows[e.RowIndex].Cells[4].Value.ToString() == "Movie")
                {
                    lstType.SelectedIndex = 0;
                }
                else
                {
                    lstType.SelectedIndex = 1;
                }// End of IF ELSE Statement
                if (DataGridMovies.Rows[e.RowIndex].Cells[5].Value.ToString() == "Watched")
                {
                    lstStatus.SelectedIndex = 0;
                }
                else
                {
                    lstStatus.SelectedIndex = 1;
                }// End of IF ELSE Statement
            }//End of IF statement

您需要使用 sql 參數,否則您的 sql 數據庫可能會被黑客入侵。

你可以在這里閱讀: https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=netframework-4.8 cmd.Parameters.AddWith(name, value)

確定記錄是否存在。 如果沒有,您將使用插入添加它。 如果不是,則改為更新記錄。

根據您可以使用的處理能力,您可能還會考慮自動完成。 這可以隱藏他們只是在更新您已經“找到”的記錄的事實。 https://www.grapecity.com/blogs/dynamic-autocomplete-c1textbox

后端的元標記和算法有時會處理重復條目。

暫無
暫無

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

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