数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for J
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for J相关的知识,希望对你有一定的参考价值。
数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]未能为数据库 'netinnet_jckj_v60' 中的对象 'sys_log' 分配空间,因为文件组 'PRIMARY' 已满。
1.检查你的磁盘剩余空间是否足够,如果没有磁盘剩余空间,则清理磁盘,腾出空间2.检查你的磁盘分区格式
如果是FAT16,则数据文件最大只能是2G
如果是FAT32,则数据文件最大只能是4G
改为NTFS分区则没有这种限制
3.检查一下你有没有限制数据库文件的大小
企业管理器--右键你的数据库--属性--文件增长限制--如果有限制大小,取消限制
4.检查你的SQL版本,如果你用MSDE,则限制了数据文件最大是2G
5.你也可以为 primary 组添加新的数据文件来解决这个问题
alter database 库名 add file(NAME = 逻辑文件名,FILENAME = 'c:/实际文件名.ndf'
或者 选中数据库->属性->文件:添加一个新文件 参考技术A http://blog.163.com/dm_kingdee/blog/static/210013041201271113617685/
核心数据:执行提取时出现错误的访问错误
【中文标题】核心数据:执行提取时出现错误的访问错误【英文标题】:Core Data: Bad Access Error upon Execute Fetch 【发布时间】:2011-03-31 12:13:11 【问题描述】:在 UITableView 的提交中,我使用以下代码删除了一个对象:
[_context deleteObject:[_StudiessList objectAtIndex:indexPath.row]];
NSError *error;
if (![_context save:&error])
// Handle error
NSLog(@"Unresolved error series %@, %@", error, [error userInfo]);
[self LoadData]; // bad access fire here
其中LoadData
是重新填充表格视图的函数
它的代码是:
iPaxeraAppDelegate *appDelegate = (iPaxeraAppDelegate *)[[UIApplication sharedApplication] delegate];
self.context = appDelegate.managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Studies" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"StudyDate" ascending:YES] autorelease]];
[fetchRequest setSortDescriptors:sortDescriptors];
NSError *error;
@try
// error done here exactly at fetch
self.StudiessList = [_context executeFetchRequest:fetchRequest error:&error];
@catch (NSException * e)
NSLog(e);
[fetchRequest release];
[StudiessList retain];
LoadData
在executeFetchRequest:
上崩溃
【问题讨论】:
你也在泄露StudiesList
。感觉它可能是一个保留属性,对self.StudiessList
的调用已经保留了返回的数组。向它发送另一个保留将导致它泄漏,如果它与在 dealloc 中发送的释放之外的另一个释放不平衡。
如果您遵循样式约定,您的代码将更易于阅读。只有框架名称、类名称和常量应该以大写字母开头。 (另外,StudyssList 拼写错误)。所以StudiessList
应该是studiesList
和LoadData
应该是loadData
。遵循约定将使您的代码更容易被其他人阅读。苹果有一个风格指南埋在某个地方。您应该尝试追踪并关注它。
【参考方案1】:
你的问题可能在这里:
NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"StudyDate" ascending:YES] autorelease]];
通过附加一个显式的自动释放,您设置了一种情况,在这种情况下,排序描述符可以在仍然需要时被释放。当 fetch 去抓取排序描述符时,它会因为对象不存在而崩溃。
显式自动释放可能会产生问题,因为它们与定义它们的直接作用域的内存池的耗尽密切相关。尽管许多人随意使用自动释放,但实际上应该只在从方法,因为 autorelease 告诉运行时,“我完全完成了这个对象,我不在乎它会发生什么。”如果你没有完成这个对象,那么你就会遇到问题。
使用便捷方法中的隐式自动释放可以消除这个问题,因为自动释放是在另一个范围内发布的,例如持有便捷方法的类对象。然后它进入本地范围并可以保留,而不必担心本地范围内的自动释放会杀死它。
试试:
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"StudyDate " ascending:YES]];
... 看看是否能解决崩溃问题。
【讨论】:
你能告诉我什么时候发布它,我应该说[sortDescriptor retain]; sortDescriptorWithKey: 是一种方便的方法,它返回一个自动释放的对象,因此您不必释放它。但是,它是在不同的范围内自动发布的,因此它可以防止您现在遇到的问题。 我删除了它,但它引发了同样的错误 [_StudiessList removeObjectAtIndex:indexPath.row];它引发以下错误 -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance以上是关于数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for J的主要内容,如果未能解决你的问题,请参考以下文章
问题Cause: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK