数据

A:取出数据表里的数据

单个数据:

using System.Data.SqlClient;



using(SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa;Database=Northwind"))
{
con.Open();
string strsql6 = "select count(sno) from student where cno='" + class1 + "' and cet4>425";
SqlCommand cmd = new SqlCommand(strsql6,con);
this.TextBox1.Text = cmd.ExecuteScalar().ToString();
}

  

多字段的话,要参考ExecuteReader或者用SqlAdapter的fill方法,装到DataTable里面,然后写for循环,table.Rows[i]["字段名"].ToString()可以读取字段的值

B:为取出数据根据桩号画点画线。泛型的使用

 #region 显示测线
        private void View_Btn_Click(object sender, EventArgs e)
        {


            // main.view();
            //先循环每一条线
            for (int i = 0; i < Describ_dataGridView.Rows.Count; i++)
            {
                string lineNa = Convert.ToString(Describ_dataGridView.Rows[i].Cells[1].Value);

                //画线
                this.newLine(lineNa);
                //画点
                this.newPoint(lineNa);

            }
            this.Hide();
        }
        #endregion


        #region 画点
        private void newPoint(string lineNa)
        {
            FormMain main = (FormMain)this.Owner;
            List<CPoint> list = getPoints(lineNa);
            for (int i = 0; i < list.Count; i++)
            {

double XPoint = list[i].lng;//从表中取数据 double YPoint = list[i].lat; IActiveView pActiveView = main.axMapControl1.ActiveView; IPoint pPoint = new ESRI.ArcGIS.Geometry.Point(); pPoint.PutCoords(XPoint, YPoint); IMarkerElement pMarkerElement; pMarkerElement = new MarkerElementClass(); ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol(); pMarkerSymbol.Size = 6; IElement pElement; pElement = pMarkerElement as IElement; pElement.Geometry = pPoint; pMarkerElement.Symbol = pMarkerSymbol; //建立文字符号对象,并设置相应的属性 ITextElement pTextEle; IElement pEles; pTextEle = new TextElementClass(); pTextEle.Text = "[" + XPoint + "," + YPoint + "]"; //symbol ITextSymbol pTextSymbol = new TextSymbol(); pTextSymbol.Color = GetRGBColor(255, 0, 0); pTextSymbol.Size = 10; pTextEle.Symbol = pTextSymbol; pEles = pTextEle as IElement; pEles.Geometry = pPoint; IGraphicsContainer pGraphicsContainer = main.axMapControl1.ActiveView as IGraphicsContainer; pGraphicsContainer.AddElement((IElement)pEles, 0); pGraphicsContainer.AddElement((IElement)pMarkerElement, 0); pActiveView.Refresh(); } } #endregion #region 添加点元素 private void axMapControl1Point(string lineNa) { FormMain main = (FormMain)this.Owner; List<CPoint> list = getPoints(lineNa); for (int i = 0; i < list.Count; i++) { double XPoint = list[i].lng; double YPoint = list[i].lat; IMap pMap = main.axMapControl1.Map; IActiveView activeView = main.axMapControl1.ActiveView; IPoint pPoint = new ESRI.ArcGIS.Geometry.Point(); pPoint.PutCoords(XPoint, YPoint); IMarkerElement pMarkerElement = new MarkerElementClass(); ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbol(); pMarkerSymbol.Color = GetRGBColor(11, 200, 145); pMarkerSymbol.Size = 20; pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond; IElement pElement = (IElement)pMarkerElement; pElement.Geometry = pPoint; pMarkerElement.Symbol = pMarkerSymbol; IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)pMap; pGraphicsContainer.AddElement((IElement)pMarkerElement, 0); activeView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); } } #endregion #region 取点 private List<CPoint> getPoints(string lineNa) { DataBaseConnection connection = new DataBaseConnection(); OleDbConnection conn = connection.getConnection(); //创建命令 //OleDbCommand cmd = conn.CreateCommand(); List<CPoint> pList = new List<CPoint>(); OleDbDataAdapter da = new OleDbDataAdapter("select * from point where 测线名称='" + lineNa + "'", conn); //建立适配器,通过SQL语句去搜索数据库 DataSet ds = new DataSet(); //建立数据集 da.Fill(ds, "point"); //用FILL的方式将适配器已经连接好的数据表填充到数据集MYDS这张表 //用显示控件来显示表 foreach (DataRow var in ds.Tables["point"].Rows) //set.Tables[0].Rows 找到指定表的所有行 0这里可以填表名 { CPoint cp = new CPoint(); // cp.lineN = var[1].ToString(); cp.pileN = Convert.ToDouble(var[2]); cp.lng = Convert.ToDouble(var[3]); cp.lat = Convert.ToDouble(var[4]); cp.count = ds.Tables["point"].Rows.Count; pList.Add(cp); } return pList; } #endregion #region 画线 private List<CPoint> newLine(string lineNa) { FormMain main = (FormMain)this.Owner; List<CPoint> list = getPoints(lineNa); for (int i = 0; i < list.Count - 1; i++) { double XPoint = list[i].lng; double YPoint = list[i].lat; double XPoint2 = list[i + 1].lng; double YPoint2 = list[i + 1].lat; IActiveView pActiveView = main.axMapControl1.ActiveView;//定义了数据显示 //画线 IPoint lPoint1 = new ESRI.ArcGIS.Geometry.Point(); lPoint1.PutCoords(XPoint, YPoint); IPoint lPoint2 = new ESRI.ArcGIS.Geometry.Point(); lPoint2.PutCoords(XPoint2, YPoint2); IPolyline mpLine = CreatePolyLineByTwoPoint(lPoint1, lPoint2); ILineElement lineElement = new LineElementClass(); ISimpleLineSymbol pSLS = new SimpleLineSymbol(); IRgbColor pColor = GetRGBColor(0, 255, 0); pSLS.Color = pColor; pSLS.Width = 2; lineElement.Symbol = pSLS; IElement lElement = lineElement as IElement; lElement.Geometry = mpLine; //---- IGraphicsContainer pGraphicsContainer = main.axMapControl1.ActiveView as IGraphicsContainer; pGraphicsContainer.AddElement((IElement)lineElement, 0); pActiveView.Refresh(); } return list; } #endregion #region 根据两点生成一条线 private IPolyline CreatePolyLineByTwoPoint(IPoint p1, IPoint p2) { INewLineFeedback m_LineFeed = new NewLineFeedback(); m_LineFeed.Start(p1); m_LineFeed.AddPoint(p2); IPolyline m_PolyLine = m_LineFeed.Stop(); return m_PolyLine; } #endregion #region 调颜色 private IRgbColor GetRGBColor(int red, int green, int blue) { IRgbColor rGBColor = new RgbColor(); rGBColor.Red = red; rGBColor.Green = green; rGBColor.Blue = blue; return rGBColor; } #endregion

  

C:泛型的使用

把数据存入泛型之后。想要调用直接遍历个数取出调用的参数名字就好。详细看上代码

原文地址:https://www.cnblogs.com/janeaiai/p/4835149.html