MySQL + C#连接器/ NET批量操作

时间:2012-07-22 23:20:56

标签: c# mysql mysql-connector

我目前正在编写多线程聊天服务,并且遇到了MySql的一些错误,我似乎找不到解决方案。

我目前正在使用“MySqlHelper”类利用MySql的连接池:

            public User GetUser(string Email)
    {
        try
        {
            string Escape = MySqlHelper.EscapeString(Email);
            string Query = String.Format("SELECT * FROM `users` WHERE `email` = '{0}' LIMIT 1", Escape);
            using (MySqlDataReader reader = MySqlHelper.ExecuteReader(databaseLoader.connectionString.ToString(), Query))
            {
                if (!reader.HasRows)
                {
                    return null;
                }
                while (reader.Read())
                {
                    string messages = reader["messages"].ToString();
                    var OfflineMessages = new List<UserMessagePair>();
                    if (reader["messages"].ToString() != "")
                    {
                        foreach (var msg in ListSerializer.Deserialize(messages))
                        {
                            var pair = ListSerializer.Deserialize(msg);
                            OfflineMessages.Add(new UserMessagePair(int.Parse(pair[0]), pair[1]));
                        }
                    }
                    return new User()
                               {
                                   ID = int.Parse(reader["id"].ToString()),
                                   Email = reader["email"].ToString(),
                                   Password = reader["password"].ToString(),
                                   Nickname = reader["nickname"].ToString(),
                                   Status = reader["status"].ToString(),
                                   About = reader["about"].ToString(),
                                   Role = (Misc.Type.RoleType) Enum.Parse(typeof (Misc.Type.RoleType),
                                                                          reader["role"].ToString(),
                                                                          true),
                                   Premium = bool.Parse(reader["premium"].ToString()),
                                   Rooms = ListSerializer.Deserialize(reader["subscriptions"].ToString()),
                                   Device = (Misc.Type.DeviceType) Enum.Parse(typeof (Misc.Type.DeviceType),
                                                                              reader["devicetype"].ToString(),
                                                                              true),
                                   lastIPAddress = reader["ipaddress"].ToString(),
                                   uniqueID = reader["uniqueid"].ToString(),
                                   Contacts = ListSerializer.Deserialize(reader["contacts"].ToString()),
                                   CustomTag = reader["tag"].ToString(),
                                   OnlineStatus = int.Parse(reader["onlinestatus"].ToString()),
                                   Messages = int.Parse(reader["messagecount"].ToString()),
                                   LastTime = reader["lasttime"].ToString(),
                                   UserNotes = reader["notes"].ToString(),
                                   OfflineMessages = OfflineMessages,
                                   Exists = true
                               };
                }
                return null;
            }
        }

        catch
        {
            return null;
        }
    }

实际上没有抛出正式错误 - 会发生什么事情是在一段时间内(30-40个用户连接之后)库会停止连接?我认为这是因为超出了最大池大小(我将其设置为100,000),是否有一种有效的方法来管理池化连接并确保不会发生这种情况,因为Oracle在其网站上声称({{3它会自动为你管理连接,但这似乎没有正确发生......

说实话,我不确定发生了什么事,因为没有例外被抛出,它只是,只是,不起作用。

有没有人像这样大规模地使用过连接器/网并遇到问题?因为我遇到了无数问题,似乎找不到解决这个问题的方法。

另一个问题是,除了使用连接器/网络之外还有其他选择吗?

非常感谢! (对不起,如果我含糊不清,我真的不知道这里发生了什么......)

0 个答案:

没有答案