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