У меня есть функция здесь, которая получает последнее значение order_id
и увеличивает его на 1, если это еще не 1. Проблема в том, что начальное значение равно null, и я не смог его добавить на 1.
Код:
private void getOrderId()
{
var orders_dt = conn.Select("orders", "MAX(order_id)").GetQueryData();
if (orders_dt == null || orders_dt.Rows.Count == 0 || orders_dt.Rows[0][0] == null)
{
//Should not preemptively insert into the database
order_no.Text = "1";
}
else
{
int order_id = orders_dt.Rows[0][0] + 1; //ERROR HERE
order_no.Text = order_id.ToString();
}
}
Произошла ошибка в int order_id = orders_dt.Rows[0][0] + 1;
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: "Оператор" + "не может применяться к операндам типа" System.DBNull "и" int "
Есть идеи?
Изменение: я уже подтвердил запрос в MySql, он возвращает null.
Первоначальная проверка проверяет значение null вместо DBNull.Value
.
private void getOrderId()
{
var orders_dt = conn.Select("orders", "MAX(order_id)").GetQueryData();
if (orders_dt == null || orders_dt.Rows.Count == 0 || orders_dt.Rows[0][0] == DBNull.Value)
{
//Should not preemptively insert into the database
order_no.Text = "1";
}
else
{
int order_id = orders_dt.Rows[0].Field<int>(0) + 1;
order_no.Text = order_id.ToString();
}
}
Замечания:
//I'm using 'Field<T>' to ensure correct datatype. Change 'Field<int>' to reflect whatever type it really is.
int order_id = orders_dt.Rows[0].Field<int>(0) + 1;