前几个星期的写的程序在测试的时候没有问题,可是等到正式使用的时候却出现了很多不好的错误,结果给BOSS训了一顿。主要的错误有:
1.使用sqlconnection创建连接以后没有进行关闭,导致程序不断创建新的连接,使得数据库连接池爆满。
解决:使用using(sqlconnection conn = new sqlconnection())的形式进行解决。
2.使用了子线程对数据库进行连接。一旦父线程挂掉,子线程的资源可能无法释放。连接继续。
解决:使用线程池对分配线程,在一定程度上能减少故障的发生。
还有就是几个不是错误的错误。
该程序在使用的时候,是从远程数据库获取查看版本号。如果有更新,则取数据过来更新本地数据库,再对远程数据库该条目的版本号进行修改。
我在这里的实现过程是:先把所有版本号不同的数据ID取出来。然后从远程数据库的data取出数据,生成对应的类。然后用class.save函数调用数据层的方法进行写入操作。
问题出现了,我很囧的每写入一条数据就建立一个连接,然后再把这个连接释放掉!!!要知道一次同步更新的数据可能是几W条(……其实不算太多……) 建立几W次连接,释放几W次连接资源,想想都觉得头皮发麻……而且更为恐怖的是:如果中间出错了,没有及时关闭连接,很可能在10分钟内把数据库的连接给耗光!
唉……我还是个死大学生啊……这么低级的错误都犯……
还好……BOSS给我擦屁股了,不然不知道怎么死= =。。。
1.使用sqlconnection创建连接以后没有进行关闭,导致程序不断创建新的连接,使得数据库连接池爆满。
解决:使用using(sqlconnection conn = new sqlconnection())的形式进行解决。
2.使用了子线程对数据库进行连接。一旦父线程挂掉,子线程的资源可能无法释放。连接继续。
解决:使用线程池对分配线程,在一定程度上能减少故障的发生。
还有就是几个不是错误的错误。
该程序在使用的时候,是从远程数据库获取查看版本号。如果有更新,则取数据过来更新本地数据库,再对远程数据库该条目的版本号进行修改。
我在这里的实现过程是:先把所有版本号不同的数据ID取出来。然后从远程数据库的data取出数据,生成对应的类。然后用class.save函数调用数据层的方法进行写入操作。
问题出现了,我很囧的每写入一条数据就建立一个连接,然后再把这个连接释放掉!!!要知道一次同步更新的数据可能是几W条(……其实不算太多……) 建立几W次连接,释放几W次连接资源,想想都觉得头皮发麻……而且更为恐怖的是:如果中间出错了,没有及时关闭连接,很可能在10分钟内把数据库的连接给耗光!
唉……我还是个死大学生啊……这么低级的错误都犯……
还好……BOSS给我擦屁股了,不然不知道怎么死= =。。。