am2222
کاربر عادی

ارسالها: 26
تاریخ عضویت: مهر ۱۳۹۲
اعتبار: 4
|
مشکل این کد به نظرتون کجاست؟
سلام
من قصددارم روی دیتابیس یک featureclass رو ویرایش کنم.یعنی feature ها رو اصافه، حذف و ویرایششون کنم. اولین قدمم اضافه کردن اونهاست.این قسمتی از کدی هست که نوشتم
کد:
// getLayerFromGeoDatabase();
// Create the workspace factory.
Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SqlWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
IWorkspaceFactory2 workspaceFactory2 = workspaceFactory as IWorkspaceFactory2;
// Build a connection string.
String[] connectionProps =
{
"dbclient=SQLServer", "serverinstance=CRAZYVIRUS-HP",
"database=land_gis", "authentication_mode=OSA"
};
String connString = String.Join(";", connectionProps);
IWorkspace workspace = workspaceFactory2.OpenFromString(connString, 0);
ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explict Cast
ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("dbo.PROPERTY");
ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass();
featureLayer.FeatureClass = featureClass;
featureLayer.Name = featureClass.AliasName;
featureLayer.Visible = true;
IFeature feature = featureClass.CreateFeature();
feature.Shape = null;
ISubtypes subtypes = (ISubtypes)featureClass;
IRowSubtypes rowSubtypes = (IRowSubtypes)feature;
if (subtypes.HasSubtype)
{
rowSubtypes.SubtypeCode = 3;
}
rowSubtypes.InitDefaultValues();
int contractorFieldIndex = featureClass.FindField("owner_ID");
feature.set_Value(contractorFieldIndex, "1234");
feature.Store();
ولی توی خط IFeature feature = featureClass.CreateFeature(); با این ارور مواجه میشم
کد:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
سرچی ک زدم این یک ارور عمومیه..کسی تا به الان این مشکل رو داشته؟میتونین در موردش کمکم کنید؟ 
ممنون
|
|
۳۱-۴-۱۳۹۳ ۰۹:۳۷ عصر |
|
javadadabi
کاربر عادی

ارسالها: 96
تاریخ عضویت: خرد ۱۳۹۳
اعتبار: 39
|
RE: مشکل این کد به نظرتون کجاست؟
سلام
اول اینکه اگر کد رو برای یک برنامه SAND ALONE می نویسید.کد نویسی برای WORKASPACE و معرفی لایه مورد نظر منطقی به نظر میرسه.
اگر که نه،کد رو برای ARCGIS DESKTOP نوشتید،نیازی به این همه کد نویسی نبود و کافی بود نام لایه مورد نظر رو در لیست لایه های موجود در map جستجو و اونو معرفی کنید.
در مورد خطایی که می فرمایید حدس من این هست که لایه هدف شما که می خواید ویرایشش کنید برای ویرایش register نشده.(register as versioned)
|
|
۱-۵-۱۳۹۳ ۱۲:۱۹ صبح |
|
am2222
کاربر عادی

ارسالها: 26
تاریخ عضویت: مهر ۱۳۹۲
اعتبار: 4
|
RE: مشکل این کد به نظرتون کجاست؟
سلام..بله برای stand alone هست.درسته اون versioning رو فعال نکرده بودم...من الان یه سوالی دارم..من دیتابیسم روی لوکال هاست هست..بخوام منتقلش کنم روی سرور و انلاینش کنم..بک اپ بگیرم میتونم این کار رو بکنم؟یا اذیت میکنه؟بهترین راه به نظرتون چیه؟
|
|
۲-۵-۱۳۹۳ ۰۹:۳۲ عصر |
|