当前位置:编程学习 > 网站相关 >>

mapinfo数据库绑定的问题(急)

/// <summary>
/// 绑定图层
/// </summary>
/// <param name="pStrSql">提取图层的sql语句</param>
/// <param name="lyrName">图层名称</param>
/// <param name="Index">数据库连接字符串</param>
public MapXLib.Layer lyrBind(AxMapXLib.AxMap AxMap, string pStrSql, string lyrName, int Index)
{
MapXLib.Layer re = null;
if (string.IsNullOrEmpty(strConString))
{
// 读取ini,连接数据库,为提取空间图层生成数据库连接字符串
ClassIniFile readIni = new ClassIniFile(Application.StartupPath + @"\ini\system.ini");
ComputerSN computerSn = new ComputerSN("GIS1212");
string strHead = "db";
string strServerName = "ServerName ";
string strUserName = "LogId";
string strPassWord = "LogPassword";
string strDefult = string.Empty;
string Serever = readIni.GetString(strHead, strServerName, strDefult);
string Userid = readIni.GetString(strHead, strUserName, strDefult);
string Passwd = readIni.GetString(strHead, strPassWord, strDefult);
//*********************加密后的数据库密码
Passwd = computerSn.GetSourceText(Passwd);
strConString = "UID=" + Userid + ";PWD=" + Passwd + ";srvr=" + Serever;
}
try
{
MapXLib.LayerInfo LayerInfoObject = new MapXLib.LayerInfoClass();
LayerInfoObject.Type = MapXLib.LayerInfoTypeConstants.miLayerInfoTypeServer;
LayerInfoObject.AddParameter("name", lyrName);
LayerInfoObject.AddParameter("ConnectString", strConString);
LayerInfoObject.AddParameter("Query", pStrSql);
LayerInfoObject.AddParameter("toolkit", "ORAINET");
LayerInfoObject.AddParameter("AutoCreateDataset", 1);
if (lyrName == "高压线路"||lyrName=="高压杆塔")
{
LayerInfoObject.AddParameter("Cache", "all");
}
LayerInfoObject.AddParameter("DatasetName", lyrName);
re = AxMap.Layers.Add(LayerInfoObject, Index);
LayerUserInfoList.Add(new LayerUserInfo(LayerInfoObject,lyrName,Index));
}
catch
{
MessageBox.Show("加载图层“ " + lyrName + "”失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
return re;
}

/// <summary>
/// 绑定图层
/// </summary>
/// <param name="pStrSql">提取图层的sql语句</param>
/// <param name="lyrName">图层名称</param>
/// <param name="Index">数据库连接字符串</param>
public MapXLib.LayerInfo lyrBind(string pStrSql, string lyrName)
{
if (string.IsNullOrEmpty(strConString))
{
// 读取ini,连接数据库,为提取空间图层生成数据库连接字符串
ClassIniFile readIni = new ClassIniFile(Application.StartupPath + @"\ini\system.ini");
ComputerSN computerSn = new ComputerSN("GIS1212");
string strHead = "db";
string strServerName = "ServerName ";
string strUserName = "LogId";
string strPassWord = "LogPassword";
string strDefult = string.Empty;
string Serever = readIni.GetString(strHead, strServerName, strDefult);
string Userid = readIni.GetString(strHead, strUserName, strDefult);
string Passwd = readIni.GetString(strHead, strPassWord, strDefult);
//*********************加密后的数据库密码
Passwd = computerSn.GetSourceText(Passwd);
strConString = "UID=" + Userid + ";PWD=" + Passwd + ";srvr=" + Serever;
}
MapXLib.LayerInfo LayerInfoObject = new MapXLib.LayerInfoClass();
LayerInfoObject.Type = MapXLib.LayerInfoTypeConstants.miLayerInfoTypeServer;
LayerInfoObject.AddParameter("name", lyrName);
LayerInfoObject.AddParameter("ConnectString", strConString);
LayerInfoObject.AddParameter("Query", pStrSql);
LayerInfoObject.AddParameter("toolkit", "ORAINET");
LayerInfoObject.AddParameter("AutoCreateDataset", 1);
LayerInfoObject.AddParameter("DatasetName", lyrName);
return LayerInfoObject;

}
以上是将存储在空间数据库(Oracle)中的信息绑定到图层上,下面的对上面函数的调用:
 //指定生成图层的sql语句
string strsql = "select * from bdz_test_new";
//在axmap上添加图层
MapXLib.Layer lyrLineTemp= LayerSet.lyrBind(axMap1, strsql, layerName, 1);
//设置该图层可以样式覆盖
lyrLineTemp.OverrideStyle = true;
//设置线的宽度和颜色
lyrLineTemp.Style.LineWidth = 5;
lyrLineTemp.Style.LineColor = 785914;
lyrLineTemp.Visible = true;
但是,程序运行后,图层上并没有显示出新添加的图层,这是怎么回事呢?
我猜想是不是一下原因:
我上面做的只是告诉mapx数据源在哪里,需要查询哪些数据,下面还没有告诉mapx应该怎样呈现这些数据,
是不是还应该在绑定的图层中说明一下应该显示哪些字段、怎样显示(点、线、面)?
请高手帮助解答!!! --------------------编程问答-------------------- 不懂,帮顶了!
补充:企业软件 ,  地理信息系统
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,