C# 如果在datagridview中有空值

C# 如果在datagridview中有空值,c#,datagridview,C#,Datagridview,使用c#winforms和sqlite 我想从数据集插入数据库。列包括名称、开始日期、结束日期。日期和结束日期列的数据格式都不正确,即M/dd/yyyy,因此我使用string startdate=Convert.ToDateTime(startdatetime).ToString(“dd/M/yyyy”)问题在于开始日期和结束日期列中存在空值,因此我无法在不首先检查空单元格的情况下转换所有内容。因此,我不确定该为查询放置什么,因为如果单元格为空,插入startdatetime将以错误的格式放置

使用c#winforms和sqlite

我想从数据集插入数据库。列包括名称、开始日期、结束日期。日期和结束日期列的数据格式都不正确,即M/dd/yyyy,因此我使用
string startdate=Convert.ToDateTime(startdatetime).ToString(“dd/M/yyyy”)问题在于开始日期和结束日期列中存在空值,因此我无法在不首先检查空单元格的情况下转换所有内容。因此,我不确定该为查询放置什么,因为如果单元格为空,插入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);
试试这个-

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()

同样地,
数据库中的
DateAttended
EndDate
列应为
null
。 您还可以阅读有关
.ToString()
转换的更多信息。ToString()
.ToString()
不会处理
null
,因此必须使用
转换.ToString()

同样地,
数据库中的
DateAttended
EndDate
列应为
null

您还可以阅读更多关于
.ToString()
Convert.ToString()

无法在此处执行的操作的信息。但是试着像
string.IsNullOrWhiteSpace(startdatetime)那样?DBNull.value:Convert.ToDateTime(startdatetime).ToString(“dd/M/yyyy”)我已经可以转换了。转换后的变量为startdate,而转换前的日期变量为startdatetime。我想将startdatetime插入我的数据库,但如果不先检查空单元格,我就无法执行此操作,因为我无法转换空字符串,因为
ToString()
导致了空字符串的抛出错误。改为使用
Convert.ToString(dataGridView1.SelectedRows[0].Cells[“开始日期”].Value)
不获取您在此处要执行的操作。但是试着像
string.IsNullOrWhiteSpace(startdatetime)那样?DBNull.value:Convert.ToDateTime(startdatetime).ToString(“dd/M/yyyy”)我已经可以转换了。转换后的变量为startdate,而转换前的日期变量为startdatetime。我想将startdatetime插入我的数据库,但如果不先检查空单元格,我就无法执行此操作,因为我无法转换空字符串,因为
ToString()
导致了空字符串的抛出错误。改为使用
Convert.ToString(dataGridView1.SelectedRows[0]。单元格[“开始日期”].Value)