如何选择本地数据库表的所有行

时间:2017-04-28 16:25:46

标签: c# sql

enter image description here

我有一个表“Entry”,它有“vehicle”和“arrival_time”列。我已将当前时间设置为DateTime.Now。现在我想检查列“arrival_time”的每一行中的值。如果“arrival_time”超过当前时间,则将来自该特定行的“车辆”的值插入新表“更新”中。如果多个行的条件为真,那么只需单击一下按钮就可以将这些行插入到下一个表中。

我搜索了很多网站和YouTube视频,但我没有得到任何令人满意的答案。请帮忙。我正在使用Windows窗体应用程序c#。

此代码只选择一行。

2 个答案:

答案 0 :(得分:1)

创建存储过程并使用:

INSERT INTO Alert
SELECT  vehicle_no
FROM    Entry
WHERE   arrival_time > GETDATE()

然后从你的代码中调用sproc。

答案 1 :(得分:0)

请不要将代码发布为图片,需要更长时间才能为我转录

这是一个改进版本,它将一举完成所有INSERTS,并避免在您的应用程序中执行逻辑所涉及的所有网络闲聊。

由于我不知道通过cn可以使用哪些方法,我只是使用ADO编写。 我做的一个补充是InsertQuantity变量,它将返回受影响的"行#34; SQL返回的值,如果执行中有错误,则将其设置为-1;

private void RefreshBtn_Click(object Sender, EventArgs e) {
    int InsertQuantity;

    using (SqlConnection conn = new SqlConnection(strConnection)) {
        using (SqlCommand cmd = new SqlCommand()) {
            cmd.Connection = conn;
            cmd.CommandText = "INSERT Alert(Vehicle_no) SELECT Vehicle_no FROM Entry WHERE arrival_time <= GetDate()";

            try {
                conn.Open();
                InsertQuantity = cmd.ExecuteNonQuery();
            }
            catch {
                InsertQuantity = -1;
                // whatever error handling you need
            }
            finally { conn.Close(); }
        }
    }
    // InsertQuantity will tell you how many "alerts" were added
    // If  = -1 then there was an error
}