【问题标题】:How to insert latitude and longitude in database from click event?如何通过点击事件在数据库中插入纬度和经度?
【发布时间】:2015-06-01 08:51:25
【问题描述】:

使用 ASP。我正在尝试将用户的位置(纬度、经度)存储到数据库中。这提出了问题:

我想通过单击按钮获取谷歌地图的经度和纬度值,我在数据库中得到 0 个值。我的数据库有两个具有十进制数据类型的经度和纬度。

我也收到这个错误

cmd1.ExecuteNonQuery() 中的类型系统数据 sqlclient-sqlexception-occured-in-system-data-dll 的未处理异常;线

这是我第一次尝试的示例代码:

<html xmlns="http://www.w3.org/1999/xhtml"> 
   <head id="Head1" runat="server">
   <title></title>
</head>
<body>
   <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
   <script type="text/javascript">
       var long = 0;
       var lat = 0;
       window.onload = function () {
           var mapOptions = {
               center: new google.maps.LatLng(18.9300, 72.8200),
               zoom: 14,
               mapTypeId: google.maps.MapTypeId.ROADMAP
           };
           var infoWindow = new google.maps.InfoWindow();
           var latlngbounds = new google.maps.LatLngBounds();
           var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);
           google.maps.event.addListener(map, 'click', function (e) {
               long = e.latLng.lng();
               lat = e.latLng.lat();
               document.getElementById("lat").value = lat;
               document.getElementById("lng").value = long;
               alert("Latitude: " + lat + "\r\nLongitude: " + long);
           });
       }
   </script>

<form id="myForm" runat="server">
   <div id="dvMap" style="width: 300px; height: 300px">
   </div>
   <asp:HiddenField ID="lat" runat="server" />
   <asp:HiddenField ID="lng" runat="server" />
   <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

</form>
</body>

下面是 .aspx 代码隐藏文件。我们在按钮的Click事件期间将经纬度保存到数据库中:

  protected void Button1_Click(object sender, EventArgs e)
    {

         Decimal latitude = Convert.ToDecimal(lat.Value);
        Decimal longitude = Convert.ToDecimal(lng.Value);
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            SqlConnection con = new SqlConnection(constr);


        string query1 = "insert into Courses(longi,lati) values (@lati, @longi)";

        SqlCommand cmd1 = new SqlCommand(query1, con);
        cmd1.Parameters.AddWithValue("@lati", latitude);
        cmd1.Parameters.AddWithValue("@longi", longitude);

                con.Open();

                cmd1.ExecuteNonQuery();


                con.Close();    
    }

【问题讨论】:

  • 你能从 button1_click 后面代码中的隐藏字段中获取值吗?
  • 不,先生,我无法获得
  • 代码中latitudelongitude 的值是否落后于预期值?检查你得到的那个异常的 InnerException - 那里可能有有用的信息。请edit您的问题添加。
  • 我在数据库中得到零值...我需要经度和纬度

标签: javascript c# asp.net


【解决方案1】:

您可能无法在隐藏字段中获取值,因此 null 值将进入导致错误的数据库。而且您没有在隐藏字段中获取值,因为您已经制作了这些 runat="server",因此 ID 被更改,并且您正在通过 Id 在 javascript 中设置值,但 Id 已更改。所以你需要做的是像这样将隐藏字段的ClientIDMode属性设置为static

<asp:HiddenField ID="lat"  ClientIDMode="Static" runat="server" />
<asp:HiddenField ID="lng"  ClientIDMode="Static" runat="server" />

【讨论】:

  • 先生仍然收到此错误 System.Data.dll 中发生“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理附加信息:无效的对象名称“课程”。 ((课程是表名))
  • 检查课程的拼写,因为错误表明您提供了错误的表格名称。
  • 现在坐下,我将在数据库中获取零值
  • 因为您的值没有在 javascript 代码中设置,所以您已经声明了默认值 var long = 0; 您没有从 long = e.latLng.lng(); 获取值
  • 那我需要做些什么改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
相关资源
最近更新 更多