执行一个sql语句,使用CDatabase类的,标准的处理方式,包括异常处理部分的代码。
还有,我发现,他的源码中,在发生错误时,抛出异常,但是没有释放掉::SQLAllocStmt(m_hdbc, &hstmt)分配的句柄,谁能解释一下。满意给分。
还有,我发现,他的源码中,在发生错误时,抛出异常,但是没有释放掉::SQLAllocStmt(m_hdbc, &hstmt)分配的句柄,谁能解释一下。满意给分。
调试欢乐多
基本上就是这样的,还有其他的非数据库的处理我省略掉了。
try
{
m_pDatabase->ExecuteSQL(strSQL);
}
catch(CDBException* e)
{
e->Delete();
}
// sql语句是可定正确的
你给出的代码是正确的,不是你给出的代码中的错误。
数据库是不能换的,我没有这个权力啊。
to zyc(zir)
没有存储过程.会不会跟他的文件空间有关系吗?我指定他分配的文件空间是自动增长的。会不会有影响啊。
SQL_SERVER自动增长不会形成大量浪费资源的情况,不用怀疑。
按你给出的代码,看不出问题在什么地方。
这样吧,你打开数据的监控器,看下系统的连接数、SQL的运行时间等。
对啦,你的程序与数据库之间用什么方法连接的?
m_db.ExecuteSQL(sql);
m_db.CommitTrans();
这样试一下。
to leisureful(慢慢工作) :
还有,如果采用事务方式处理,会快一点儿吗?
{
m_pDatabase->ExecuteSQL(strSQL);
}
catch(ComError* e)
{
e->Delete();
}
还有,我听人说,在SQL-server中,数据量大到一定规模,连Select都会慢很多,不光是Insert和Update。
至于性能下降,可能是数据库的管理及配置上。如:用户连接比较多,其它用户连接做耗时的查询,数据库太大了(应空闲时转移备份),或者磁盘空间受限,日志太大,导至数据管引擎执行变慢。
对了,做一个对比试试验。程序变慢时,其它所有的环境保持不变,只重启VC程序,即重建一个数据库连接。看是否能变快。这样能有效定位故障的模块。
to freelybird(阿愚) :
我已经试过了,程序变慢时,程序从新启动,建立连接还是会变慢的。曾经数据库不是很大时发生过,后来增加了文件空间,好了一段时间,后来又出现那种情况了,问是不是跟自动增长有关系啊。
其实页差不多的,调用ExecuteSQL函数是不会要多少时间的,除非不需要他的那种安全判断。