当值低于 - 时显示MessageBox

时间:2014-03-20 19:34:44

标签: c# winforms

基本上我想要一个MessageBox,它在我的Form加载时出现,表示该值低于常量值(如30)。 这是我刚刚编写的代码,但它不起作用,因为IF条件在语法上不正确。

private void button2_Click(object sender, EventArgs e)
    {
        System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
        conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|DataMG.mdb";

        System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.CommandText = "Select COUNT(*) from Prodotti where Disponibilta < 30";

        cmd.Connection = conn;
        conn.Open();

        var count = (int)cmd.ExecuteScalar();
        if (count < 0)
        {
            MessageBox.Show("Attenzione alcuni prodotti sono in disponibilita' limitata!");
            conn.Close();
        }
    }

我该怎么办? 谢谢

3 个答案:

答案 0 :(得分:2)

尝试这样的事情:

using (var cmd = new OleDbCommand())
{
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select COUNT(*) from Prodotti where Disponibilta < 30";

    var count = (int)cmd.ExecuteScalar();

    if (count > 0)
    {
        MessageBox.Show("Attenzione alcuni prodotti sono in disponibilita' limitata!");
        //connection.Close(); wrap connection around an using
    }
}

基本上你要向数据库询问Disponibilta&lt; Prodotti的数量。 30,所以,如果有任何你显示消息框。

修改

我认为Disponibilta是一个数字。

答案 1 :(得分:0)

您不应该将ExecuteNonQuery()SELECT语句一起使用,SQLDataReader更快,并且正确的方法可以执行此操作:

cmd.CommandText = "SELECT * FROM Prodotti WHERE Disponibilta < 30";

conn.Open();

MySqlDataReader myReader = cmd.ExecuteReader();

if(myReader.HasRows)
{
    //This means you have at least one product with less than 30.
}

myReader.Close();
conn.Close();

答案 2 :(得分:0)

Select关键字引入了一个查询,因此您必须使用.ExecuteReader().ExecuteNonQuery()用于INSERTDELETEUPDATE和返回值是受影响的行数。

根据您的情况,创建一个阅读器并检查第一个值

OleDbDataReader reader = command.ExecuteReader();
while (reader.Read() 
{ 
    if (reader[0] < aValue) //make here the appropiate conversion
    {
        MessageBox.Show("Attenzione alcuni prodotti sono in disponibilita' limitata!");
        connection.Close();
        break;//maybe return?
    }
}