C#Windows Form App CRUD未更新记录

问题描述

我正在尝试使用C#创建一个CRUD应用程序,以跟踪项目,分配给他们的人员及其状态。我的进度很好,但是无法使用“更新”功能。每当我尝试更新记录时,都会收到我自己的错误消息,而不是“成功更新”。

有人知道是什么导致我的if语句无法正确执行吗?

using System;
using System.Windows.Forms;
using System.Data.sqlClient;
using System.Data;


namespace SFTool
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        sqlConnection con = new sqlConnection("my connection string here");

        public int ProjectID;

        private void MainForm_Load(object sender,System.EventArgs e)
        {
            // load in sql data to the data grid view
            GetProjectsDataset();
        }

        private void GetProjectsDataset()
        {

            sqlCommand cmd = new sqlCommand("SELECT * FROM sfProjects",con);

            DataTable dt = new DataTable();

            con.open();

            sqlDataReader sdr = cmd.ExecuteReader();
            dt.Load(sdr);
            con.Close();

            dataGridView.DataSource = dt;
        }

        private void insertButton_Click(object sender,EventArgs e)
        {
            // allow user to insert data into the database,or create new records
            if (IsValid())
            {
                sqlCommand cmd = new sqlCommand("INSERT INTO sfProjects VALUES (@Project_ID,@FirstName,@LastName,@Project_Status)",con);
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@Project_ID",projectIDTextBox.Text); // maps @Project_ID to the project ID textBox
                cmd.Parameters.AddWithValue("@FirstName",firstNameTextBox.Text);
                cmd.Parameters.AddWithValue("@LastName",lastNameTextBox.Text);
                cmd.Parameters.AddWithValue("@Project_Status",projectStatusTextBox.Text);

                con.open();
                cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("New record has been successfully added to the database","Saved",MessageBoxButtons.OK,MessageBoxIcon.information);

                // Now update/REFRESH the database so it shows the new record
                GetProjectsDataset();

                // reset form controls
                ResetFormControls();
            }
        }

        // data validation. (Make sure project id is never empty)
        private bool IsValid()
        {
            if (projectIDTextBox.Text == string.Empty)
            {
                MessageBox.Show("Project ID is required.","Error",MessageBoxIcon.Error);
                return false;
            }

            // else return true (it is valid)
            return true;
        }

        private void resetButton_Click(object sender,EventArgs e)
        {
            // resets,or clears,the textBoxes 
            ResetFormControls();
        }

        private void ResetFormControls()
        {
            projectIDTextBox.Clear();
            firstNameTextBox.Clear();
            lastNameTextBox.Clear();
            projectStatusTextBox.Clear();

            projectIDTextBox.Focus();
        }

        private void dataGridView_CellClick(object sender,DataGridViewCellEventArgs e)
        {
            // WHen you click on a row in the data grid,the textBoxes will automatically populate with that rows values

            ProjectID = Convert.ToInt32(dataGridView.Rows[0].Cells[0].Value);

            projectIDTextBox.Text = dataGridView.SelectedRows[0].Cells[0].Value.ToString();
            firstNameTextBox.Text = dataGridView.SelectedRows[0].Cells[1].Value.ToString();
            lastNameTextBox.Text = dataGridView.SelectedRows[0].Cells[2].Value.ToString();
            projectStatusTextBox.Text = dataGridView.SelectedRows[0].Cells[3].Value.ToString();
        }

        private void updateButton_Click(object sender,EventArgs e)
        {
            if (ProjectID > 0)
            {
                sqlCommand cmd = new sqlCommand("UPDATE sfProjects SET (Project_ID = @Project_ID,FirstName = @FirstName,LastName = @LastName,Project_Status = @Project_Status WHERE ProjectID = @Project_ID)",projectStatusTextBox.Text);
                cmd.Parameters.AddWithValue("@Project_ID",this.ProjectID);

                con.open();
                cmd.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Record is successfully updated","Updated",MessageBoxIcon.information);

                // Now update/REFRESH the database so it shows the new record
                GetProjectsDataset();

                // reset form controls
                ResetFormControls();

            }
            else
            {
                MessageBox.Show("Please select a record to update",MessageBoxIcon.Error);

            }
        }
    }
}

更新:我终于明白了

                ProjectID = Convert.ToInt32(dataGridView.Rows[0].Cells[0].Value);

需要成为

                ProjectID = Convert.ToInt32(dataGridView.SelectedRows[0].Cells[0].Value);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...