如何从单击事件插入数据库中的纬度和经度

本文关键字:纬度 经度 数据库 插入 单击 事件 | 更新日期: 2023-09-27 17:52:36

我试图将用户的位置(纬度,经度)存储到数据库。这就出现了问题:

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

我也得到了这个错误

an-unhandled-exception- type-system-data-sqlclient- sqexception -occured-in-system-data-dll in cmd1.ExecuteNonQuery();行

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

<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();    
    }

如何从单击事件插入数据库中的纬度和经度

您可能不会在隐藏字段中获得值,因此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" />