首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取当前正在运行的进程

获取当前正在运行的进程
EN

Stack Overflow用户
提问于 2012-09-03 17:44:41
回答 2查看 216关注 0票数 2

我有一个程序,列出所有当前运行的进程在列表框中实时使用c#。我在把它插入mysql数据库时遇到了问题。我从process的线程列表框中检索数据,然后保存到数据库中。我有一个问题,当列表框刷新时,它会重复向mysql数据库插入相同的数据。

有人能帮我解决这个问题吗?

这是示例代码

代码语言:javascript
复制
foreach (String item in listBox1.Items)
{
    cmd.CommandText = "SELECT * FROM sample";
    MySqlDataReader msdr = cmd.ExecuteReader();

    while (msdr.Read())
    {
        var items = msdr["log"].ToString();
        if(items != item)
        {
            String query = "INSERT INTO sample values('','"+item+"')";
            cmd.CommandText = query;

            using(MySqlDataReader reader = cmd.ExecuteReader())
            {
                reader.Close();
            }
        }
    }
    msdr.Close();
}
EN

回答 2

Stack Overflow用户

发布于 2012-09-03 17:49:38

第一:从不在INSERT语句中使用字符串。总是使用 Parameters

第二:这取决于这段代码的调用位置。如果在刷新事件中调用它,可能正确的做法是了解是否确实发生了更改,并且只有在肯定结果时才执行SQL查询。

票数 1
EN

Stack Overflow用户

发布于 2012-09-03 18:00:42

类似于(未测试):

代码语言:javascript
复制
foreach (String item in listBox1.Items)
{
    cmd.CommandText = "SELECT COUNT(*) as cnt FROM sample WHERE log = @log";
    cmd.Parameters.AddWithValue("@log", item)
    bool found = ((int)cmd.ExecuteScalar()) > 0

    if(!found)
    {

       String query = "INSERT INTO sample values('',@log)";
       cmd.CommandText = query;
       cmd.Parameters.AddWithValue("@log", item);
       cmd.ExecuteNonQuery();

    }  
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12245443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档