我用C#编一个程序,调用oracle10g里边的数据:开始建立一个连接,然后通过循环读取其中数据。可是老提示“ORA-01000:超出打开游标的最大数”错误,我看网上说了要改init.ora中的poen_cursors,我就改了,步骤如下:
sqlplus sys/sys as sysdba
alter system set open_cursors=5000 scope=both
shutdown abort
startup
可是还是不行,仍报这个错误。高手指教!!!!!
我对数据库一知半解,请高手给出修改的语句吧。
sqlplus sys/sys as sysdba
alter system set open_cursors=5000 scope=both
shutdown abort
startup
可是还是不行,仍报这个错误。高手指教!!!!!
我对数据库一知半解,请高手给出修改的语句吧。
解决方案 »
- 请教个ORACLE存储过程RETURN问题,,,在线等,,,着急
- 关于同学录系统的数据库设计
- 如何较快地将db2的数据导入oracle??
- 求救:怎样做自动加1啊
- 急!救助!SQL Server转换为Oracle语句
- 如何通过SQL语句来实现将两表中的记录合起来。
- 远程访问数据库问题 : 如何访问网络上不在公网上的数据库
- 菜鸟问题:用toad倒出的数据库 如何来恢复或覆盖数据库??
- ★★ Ora-12705: Invalid or unknown NLS parameter value specified,是跟语言有关吗? ★★
- win10系统下使用bat启动plsql的问题
- oracle的导入和导出问题。
- oracle物化视图不会自动更新是怎么回事
游标超出的原因大都是打开数据库连接不关闭造成的。
conn.open()
statment.open()statment.close()
conn.close()
中间软件用的是arcsde,是arcgis上的没用过
{
IWorkspaceFactory2 pSdeFact = new SdeWorkspaceFactoryClass();
IPropertySet pPropSet = new PropertySetClass();
pSdeFact = new SdeWorkspaceFactoryClass();
pPropSet.SetProperty("Server", "lenovo-pc");
pPropSet.SetProperty("Instance", "esri_sde");//port:5151");
pPropSet.SetProperty("USER", "sde");
pPropSet.SetProperty("PASSWORD", "sys");
pPropSet.SetProperty("VERSION", "sde.DEFAULT");
pPropSet.SetProperty("AUTHENTICATION_MODE", "DBMS");
IWorkspace pWorkspace = pSdeFact.Open(pPropSet, 0);
IEnumDataset pEnumDataset = (IEnumDataset)pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
pEnumDataset.Reset();
IDataset pDatasetTopLayer = (IDataset)pEnumDataset.Next();
//对数据库中的featuredataset循环
while (pDatasetTopLayer != null)
{
//得到featuredataset中的featureclass的名字
IFeatureDataset pFeatureDatasetTopLayer = (IFeatureDataset)pDatasetTopLayer;
IEnumDataset pEnumDataset2 = pFeatureDatasetTopLayer.Subsets;
pEnumDataset2.Reset();
IDataset pDataset2 = (IDataset)pEnumDataset2.Next();
//对featuredataset中的featureclass循环
IFeatureClass pFeatureClassPolylineEver = null;//永久保存将被循环的所有polyline的要素类
IFeatureClass pFeatureClassPolygon = null;
IFeatureCursor pFeatureCursorPolyline = null;
IFeature pFeaturePolyline = null;
IFeatureCursor featureCursorPolygon = null;
IFeature featurePolygon = null;
while (pDataset2 != null)
{
try
{ IFeatureClass pFeatureClassTemp = (IFeatureClass)pDataset2;
//得到所有的polyline及指向第一个polyline的指针
if (pFeatureClassTemp.AliasName==polylineName)//"SDE.river"
{
pFeatureClassPolylineEver = pFeatureClassTemp;
//获取线要素类的所有要素 pFeatureCursorPolyline = pFeatureClassPolylineEver.Search(new QueryFilterClass(), false);
pFeaturePolyline = pFeatureCursorPolyline.NextFeature();
}
//得到所有的方格子Polygon和指向第一个Polygon的指针
if (pFeatureClassTemp.AliasName == "SDE.yidian1")
{
pFeatureClassPolygon = pFeatureClassTemp;
//设置过滤器
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "SDE.yidian1.AREA > 0";
//设置要获得的字段
//queryFilter.SubFields = "FID, Type";
//在指定的要素类内进行搜索,把搜索的结果存在一个cursor中
featureCursorPolygon = pFeatureClassPolygon.Update(queryFilter, false);
//得到要素类中第一个要素
featurePolygon = featureCursorPolygon.NextFeature();
}
//外层对Polygon进行循环,内层对polyline进行循环,让一个Polygon与所用的polyline求交
if(pFeaturePolyline !=null&&featurePolygon !=null)
{
while (featurePolygon != null)
{
//int count = 0;
double totalLength = 0.0;
IPolygon pPolygon = featurePolygon.ShapeCopy as IPolygon ;
pFeatureCursorPolyline = pFeatureClassPolylineEver.Search(new QueryFilterClass(), false);
pFeaturePolyline = pFeatureCursorPolyline.NextFeature();
//进行包含判断的基础设置
IGeometry basicPolygon = featurePolygon.ShapeCopy;
IRelationalOperator relationOper = basicPolygon as IRelationalOperator;
//判断是否有包含或者相交的关系,如果有就求交
while (pFeaturePolyline != null)
{
//count ++;
IGeometry compareGeometryPolygon = pFeaturePolyline.ShapeCopy;
if (relationOper.Contains(compareGeometryPolygon)||relationOper.Overlaps(compareGeometryPolygon))
{
//求交
//求该线与某个面要素相交的几何线段
IPolyline pPolyline = pFeaturePolyline.ShapeCopy as IPolyline;
ITopologicalOperator pTopologicalOperator = pPolyline as ITopologicalOperator;
IGeometry pGeometryResult = pTopologicalOperator.Intersect(pPolygon, esriGeometryDimension.esriGeometry1Dimension);
IPolyline pPolylineResult = new PolylineClass();
pPolylineResult = pGeometryResult as IPolyline;
//累加面内线要素几何线段的长度
totalLength += pPolylineResult.Length;
}
pFeaturePolyline = pFeatureCursorPolyline.NextFeature();
}
//设置传入的字段的属性值
IFields fields = featureCursorPolygon.Fields;
int fieldIndex = fields.FindField(fieldAltered);//"river" featurePolygon.set_Value(fieldIndex, totalLength);
featureCursorPolygon.UpdateFeature(featurePolygon);
featurePolygon = featureCursorPolygon.NextFeature();
}
MessageBox.Show("叠加完成");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
pDataset2 = (IDataset)pEnumDataset2.Next();
} pDatasetTopLayer = (IDataset)pEnumDataset.Next(); }
}