繁体   English   中英

如果在 datagridview 中为空值

[英]If else null values in datagridview

使用 c# winforms 和 sqlite

我想从数据集插入到我的数据库中。 列是名称、开始日期、结束日期。 日期和结束日期列的数据都是错误的格式,M/dd/yyyy 所以我用string startdate = Convert.ToDateTime(startdatetime).ToString("dd/M/yyyy"); 问题是 Start Date 和 End Date 列中有空值,所以我不能在不首先检查空单元格的情况下转换所有内容。 所以我不确定要为查询添加什么,因为如果单元格为空,插入 startdatetime 会将其置于错误的格式,而插入 startdate 会导致错误。 我计划在完成后将其更改为更安全并防止sqlinjection。

        string startdatetime = dataGridView1.SelectedRows[0].Cells["Start Date"].Value.ToString();
        string enddatetime = dataGridView1.SelectedRows[0].Cells["End Date"].Value.ToString();

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                if (string.IsNullOrEmpty(cell.Value as string))
                {
                    string txtQuery = "insert into CertDB(DateAttended, EndDate) values ('" + startdatetime + "', '" + enddatetime + "')";
                    ExecuteQuery(txtQuery);
                }
                else
                {
                    string startdate = Convert.ToDateTime(startdatetime).ToString("dd/M/yyyy");
                    string enddate = Convert.ToDateTime(enddatetime).ToString("dd/M/yyyy");
                    string expiry = Convert.ToDateTime(expirytime).ToString("dd/M/yyyy");
                    string txtQuery = "insert into CertDB(DateAttended, EndDate) values ('" + startdate + "', '" + enddate + "')";
                    ExecuteQuery(txtQuery);
                }
            }
        }

尝试这个 -

string startdatetime = Convert.ToString(dataGridView1.SelectedRows[0].Cells["Start Date"].Value);
string enddatetime = Convert.ToString(dataGridView1.SelectedRows[0].Cells["End Date"].Value);

if (!string.IsNullOrEmpty(startdatetime)) startdatetime = Convert.ToDateTime(startdatetime).ToString("dd/MM/yyyy");
if (!string.IsNullOrEmpty(enddatetime)) enddatetime = Convert.ToDateTime(enddatetime).ToString("dd/MM/yyyy");

string txtQuery = "insert into CertDB(DateAttended, EndDate) values ('" + startdatetime + "', '" + enddatetime + "')";

ExecuteQuery(txtQuery);

.ToString()不会处理null所以必须使用Convert.ToString()

        string startdatetime = Convert.ToString(dataGridView1.SelectedRows[0].Cells["Start Date"].Value);
        string enddatetime = Convert.ToString(dataGridView1.SelectedRows[0].Cells["End Date"].Value);

        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                if (string.IsNullOrEmpty(cell.Value as string))
                {
                    string txtQuery = "insert into CertDB(DateAttended, EndDate) values ('" + startdatetime + "', '" + enddatetime + "')";
                    ExecuteQuery(txtQuery);
                }
                else
                {
                    string startdate = string.IsNullOrWhiteSpace(startdatetime) ? DBNull.Value : Convert.ToDateTime(startdatetime).ToString("dd/M/yyyy");
        string enddate = string.IsNullOrWhiteSpace(enddatetime) : DBNull.Value : Convert.ToDateTime(enddatetime).ToString("dd/M/yyyy");
        string expiry = string.IsNullOrWhiteSpace(expirytime) ? DBNull.Value : Convert.ToDateTime(expirytime).ToString("dd/M/yyyy");
        string txtQuery = "insert into CertDB(DateAttended, EndDate) values ('" + startdate + "', '" + enddate + "')";
        ExecuteQuery(txtQuery);
                }
            }
        }

同样, DateAttendedEndDate列在DataBase应该可以为nullable 您还可以阅读有关.ToString()Convert.ToString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM