/// <summary> /// 根据id号查询结果 /// </summary> /// <param name="storyIds"></param> /// <returns></returns> public static SharedStory query(String storyId) { SharedStory story = story = new SharedStory();; String sql = ""; string connString = "server=localhost;User Id=root;password=root;Database=internship;Charset=utf8"; MySqlConnection myconn = new MySqlConnection(connString); myconn.Open(); sql = "select story_id,message,latitude,longitude,time,image_name from shared_story where story_id='" + storyId + "' "; MySqlCommand queryCmd = new MySqlCommand(sql, myconn); Console.WriteLine(sql); MySqlDataReader reader = queryCmd.ExecuteReader(); if (reader.Read()) { story.Id = reader.GetString("story_id"); story.Message = reader.GetString("message"); story.Latitude = reader.GetString("latitude"); story.Longitude = reader.GetString("longitude"); story.Time = reader.GetString("time"); story.ImageName = reader.GetString("image_name"); reader.Close(); } myconn.Close(); return(story); }
/// <summary> ///添加点图层 /// </summary> /// <param name="axMap"></param> /// <param name="longtitude"></param> /// <param name="latitude"></param> /// <param name="fieldsMap"></param> public static IFeature addPointInLayer(AxMapControl axMap, SharedStory story) { try { double longitude = Convert.ToDouble(story.Longitude); double latitude = Convert.ToDouble(story.Latitude); String storyId = story.Id; String message = story.Message; ILayer layer = getLayerByName(axMap.Map, "story"); //将ILayer转换为IFeaturelayer,为了对图层上的要素进行编辑 IFeatureLayer featureLayer = layer as IFeatureLayer; //定义一个要素集合,并获取图层的要素集合 IFeatureClass featureClass = featureLayer.FeatureClass; //定义一个实现新增要素的接口实例,并该实例作用于当前图层的要素集 IFeatureClassWrite writer = (IFeatureClassWrite)featureClass; //定义一个工作编辑工作空间,用于开启前图层的编辑状态 IWorkspaceEdit edit = (featureClass as IDataset).Workspace as IWorkspaceEdit; //定义一个IFeature实例,用于添加到当前图层上 IFeature feature; //开启编辑状态 edit.StartEditing(true); //开启编辑操作 edit.StartEditOperation(); //定义一个点,用来作为IFeature实例的形状属性,即shape属性 IPoint point; //下面是设置点的坐标和参考系 point = new PointClass(); point.SpatialReference = axMap.SpatialReference; point.X = longitude; point.Y = latitude; //将IPoint设置为IFeature的shape属性时,需要通过中间接口IGeometry转换 IGeometry geometry = point; //实例化IFeature对象, 这样IFeature对象就具有当前图层上要素的字段信息 feature = featureClass.CreateFeature(); //设置IFeature对象的形状属性 feature.Shape = geometry; //添加字段 int index = featureClass.FindField("story_id"); feature.Value[index] = storyId; feature.Store(); //保存IFeature对象 writer.WriteFeature(feature); //将IFeature对象,添加到当前图层上 edit.StopEditOperation(); //停止编辑操作 edit.StopEditing(true); //关闭编辑状态,并保存修改 axMap.Refresh(); //刷新地图 return(feature); } catch { return(null); } }
/// <summary> /// 根据id集合号查询结果 /// </summary> /// <param name="storyIds"></param> /// <returns></returns> public static List <SharedStory> query(List <String> storyIds) { List <SharedStory> stories = new List <SharedStory>(); Image image = null; SharedStory story = null; String sql = ""; string connString = "server=localhost;User Id=root;password=root;Database=internship;Charset=utf8"; MySqlConnection myconn = new MySqlConnection(connString); myconn.Open(); for (int i = 0; i < storyIds.Count; i++) { sql = "select story_id,message,latitude,longitude,time,image_name from shared_story where story_id='" + storyIds[i] + "' "; MySqlCommand queryCmd = new MySqlCommand(sql, myconn); MySqlDataReader reader = queryCmd.ExecuteReader(); if (reader.Read()) { story = new SharedStory(); story.Id = reader.GetString("story_id"); story.Message = reader.GetString("message"); story.Latitude = reader.GetString("latitude"); story.Longitude = reader.GetString("longitude"); story.Time = reader.GetString("time"); story.ImageName = reader.GetString("image_name"); Console.WriteLine("queryStory=" + story.ToString()); stories.Add(story); } reader.Close(); } Console.WriteLine("queryStory=" + stories.Count); myconn.Close(); return(stories); }
/// <summary> /// 向数据库中添加数据 /// </summary> public static void insert(SharedStory story) { String message = story.Message; String time = story.Time; String storyId = story.Id; String longitude = story.Longitude; String latitude = story.Latitude; String imageName = story.ImageName; string connString = "server=localhost;User Id=root;password=root;Database=internship;Charset=utf8"; MySqlConnection myconn = new MySqlConnection(connString); myconn.Open(); MySqlCommand insertCmd; insertCmd = new MySqlCommand("insert into shared_story(story_id,message,image_name,time,longitude,latitude)" + "values('" + storyId + "','" + message + "','" + imageName + "','" + time + "','" + longitude + "','" + latitude + "')", myconn); insertCmd.ExecuteNonQuery(); }
/// <summary> /// /// </summary> /// <param name="id"></param> private void showTip(String id) { try { SharedStory story = DAO.query(id); if (story != null) { mStory = story; message = story.Message; time = story.Time; ML.Text = message; String imageName = story.ImageName; model.Image image = DAO.getImageByName(imageName); if (image != null) { String imageCode = image.ImageCode; if (imageCode != null && imageCode != "") { byte[] imageBuffer = Convert.FromBase64String(image.ImageCode); MemoryStream ms = new MemoryStream(imageBuffer); bitmap = (Bitmap)System.Drawing.Image.FromStream(ms); picture.Image = bitmap; } } } } catch { } }
////private string sMxdPath = Application.StartupPath; ////private List<ILayer> plstLayers = null; ////private IPoint m_PointPt = null; //private INewEnvelopeFeedback pNewEnvelopeFeedback; //private IPoint m_MovePt = null; //private IMap pMap = null; //private IActiveView pActiveView = null; //private IFeatureLayer pCurrentLyr = null; //private IEngineEditor pEngineEditor = null; //private IEngineEditTask pEngineEditTask = null; //private IEngineEditLayers pEngineEditLayers = null; /// <summary> /// 处理来自服务器的消息 /// </summary> /// <param name="message"></param> /// <returns></returns> private String handleMessage(String message) { try { Datagram data = JsonConvert.DeserializeObject <Datagram>(message); String request = data.Request; String type = data.Type; String jsonStream = data.JsonStream; Debug.WriteLine("request=" + request); Debug.WriteLine("type=" + type); if (request == "sendStory" && type == "story") { SharedStory story = JsonConvert.DeserializeObject <SharedStory>(jsonStream); DAO.insert(story); IFeature feature = MapManager.addPointInLayer(axMap, story); return("TURE"); } else if (request == "sendImage" && type == "image") { model.Image image = JsonConvert.DeserializeObject <model.Image>(jsonStream); DAO.insertImage(image); return("TURE"); } if (request == "getStory" && type == "story") { SharedStory story = JsonConvert.DeserializeObject <SharedStory>(jsonStream); double longitude = Convert.ToDouble(story.Longitude); double latitude = Convert.ToDouble(story.Latitude); IFeature feature = MapManager.addPointInLayer(axMap, "invisibleLayer", longitude, latitude); ILayer layer = MapManager.getLayerByName(axMap.Map, "invisibleLayer"); if (feature != null && layer != null) { mMap.ClearSelection(); mMap.SelectFeature(layer, feature); mFeatures = MapManager.createBuffer(axMap, bufferSize, "story", true); List <String> ids = new List <string>(); for (int i = 0; i < mFeatures.Count; i++) { String id = MapManager.getFieldByName(mFeatures[i], "story_id") as String; ids.Add(id); } //删除添加的点 MapManager.deleteAllFeature("invisibleLayer", axMap); List <SharedStory> stories = DAO.query(ids); String jsonData = DatagramPaser.toJsonDatagram(stories, "stories", "respone"); Debug.WriteLine(jsonData); return(jsonData); } } else if (request == "getImage" && type == "image") { String imageName = jsonStream; model.Image image = DAO.getImageByName(imageName); String jsonString = JsonConvert.SerializeObject(image); return(jsonString); } } catch { Debug.WriteLine("error!!"); } return("FALSE"); }