[英]Problem , Converting DBNull! Please help me from error object cannot be cast from DBNull to other type in C# with following code
string connstr = "connstr";
SqlConnection connection = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Application Name=Aung");
connection.Open();
SqlCommand cmdCount = new SqlCommand("SELECT COUNT(*) FROM Mini_table WHERE Item = @Item", connection);
cmdCount.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
int count = (int)cmdCount.ExecuteScalar();
int i = 0;
if (count > 0)
{
SqlCommand command = new SqlCommand("SELECT Qty FROM Mini_table WHERE Item = @Item", connection);
command.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
i = Convert.ToInt32(reader["Qty"]);
}
}
SqlCommand updatecmd = new SqlCommand("Update Mini_table set Qty=@Qty, Date=@Date where Item=@Item", connection);
updatecmd.Parameters.AddWithValue("@Qty", i + Nd2.Value);
updatecmd.Parameters.AddWithValue("@Date", DateTime.Now);
updatecmd.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
updatecmd.ExecuteNonQuery();
dgv2.DataSource = null;
MessageBox.Show("Update successfully");
}
else
{
SqlCommand insertcmd = new SqlCommand("insert into Mini_table(Item,Qty,Date)values(@Item,@Qty,@Date)", connection);
insertcmd.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
insertcmd.Parameters.AddWithValue("@Qty", Nd2.Value);
insertcmd.Parameters.AddWithValue("@Date", DateTime.Now);
insertcmd.ExecuteNonQuery();
dgv2.DataSource = null;
MessageBox.Show("Insert successfully");
}
connection.Close();
}
{
string connstr = "connstr";
SqlConnection connection = new SqlConnection(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Application Name=Aung");
connection.Open();
SqlCommand cmdCount = new SqlCommand("SELECT COUNT(*) FROM Stotal_table WHERE Item = @Item", connection);
cmdCount.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
int count = (int)cmdCount.ExecuteScalar();
int i = 0;
if (count > 0)
{
SqlCommand command = new SqlCommand("SELECT MiniBar FROM Stotal_table WHERE Item = @Item", connection);
command.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
i = Convert.ToInt32(reader["MiniBar"]);
{
}
}
}
SqlCommand updatecmd = new SqlCommand("Update Stotal_table set MiniBar=@MiniBar, where Item=@Item", connection);
updatecmd.Parameters.AddWithValue("@MiniBar", i + Nd2.Value);
updatecmd.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
updatecmd.ExecuteNonQuery();
}
else
{
SqlCommand insertcmd = new SqlCommand("insert into Stotal_table(Item,MiniBar)values(@Item,@MiniBar)", connection);
insertcmd.Parameters.AddWithValue("@Item", cbox2.SelectedItem.ToString());
insertcmd.Parameters.AddWithValue("@MiniBar", Nd2.Value);
insertcmd.ExecuteNonQuery();
}
connection.Close();
在将 reader 值分配给 int 之前,首先检查 reader 对象是否为 DBNull,例如
if (reader["MiniBar"] != DBNull.Value)
{
i = Convert.ToInt32(reader["MiniBar"]);
}
else
{
i = 0; // or -1
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.