当前位置: 代码迷 >> VB Dotnet >> jquery+vb.net+access,sql语句没有关问题,但是取不到数据
  详细解决方案

jquery+vb.net+access,sql语句没有关问题,但是取不到数据

热度:237   发布时间:2016-04-25 02:01:08.0
jquery+vb.net+access,sql语句没问题,但是取不到数据
前台页面使用jquery,后台是vb.net,数据库用access,sql语句没问题,在access中测试能都得到结果,但是同样语句通过服务器端访问access数据库,得到的结果是0条。
服务器端:
sql = "select * from 工程设计表 where 节点id like '" & Request.Form("id") & "*' and 隶属工程id='" & Request.Form("projectid") & "' order by 节点id"
                cn = New OleDbConnection(cnStr)
                da = New OleDbDataAdapter(sql, cn)
                ds = New DataSet
                str = ""
                da.Fill(ds, "工程设计表")
                If ds.Tables(0).Rows.Count > 0 Then
                    str = ds.Tables(0).Rows.Count
                    For Each dr As DataRow In ds.Tables(0).Rows
                        str = str & "|" & dr(0) & "|" & dr(1) & "|" & dr(2) & "|" & dr(3) & "|" & dr(4) & "|" & dr(5) & "|" & dr(6) & "|" & dr(7) & "|" & dr(8) & "|" & dr(9) & "|" & dr(10) & "|" & dr(11) & "|" & dr(12) & "|" & dr(13) & "|" & dr(14) & "|" & dr(15)
                    Next
                    Response.Write(str)
                Else
                    Response.Write(sql)
                End If

网页代码:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="formdesign.aspx.vb" Inherits="formdesign" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
    <script type="text/javascript" src="jquery-2.1.3.js"></script>
<body>
    <form id="form1" runat="server">

  <input type="text" id="test">
<input type="button" id="btn1" value="submit1" class="submit"/><input type="button" id="btn2" value="submit2" class="submit"/>

<script type="text/javascript" src="jquery-2.1.3.js"></script>
<script type="text/javascript">
    $("#form1").on("click","#btn1", function (event) {
        alert("op")
        var operation = "fd2";
        var id = "a_1_1";
        var projectid = "1"
        $.ajax({
            method: "POST",
            async: false,  //同步
            url: "asprespond.aspx",
            data: { operation: operation, projectid: projectid, id:id },
            success: function (data, status) {
                alert(data)
                $("#test").val(data.split("|")[0])
            },
            error: function(){
                alert("d")
            }
        })
    })
</script>
    </form>
</body>
</html>
取不到数据,返回的sql语句如下:
select * from 工程设计表 where 节点id like 'a_1_1*' and 隶属工程id='1' order by 节点id
把这段命令放在access中就没有问题,可以取到结果,
我直接把“select * from 工程设计表 where 节点id like 'a_1_1*' and 隶属工程id='1' order by 节点id”放在服务器端,同样得不到结果,但是如果改成“select * from 工程设计表 where 隶属工程id='1' order by 节点id”这样,那就能取到结果。
完全没有思路,谁知道为什么会这样?不是sql问题,不是access问题,不是服务器端与access连接问题。
------解决思路----------------------
你SQL语句问题,你使用模糊查询,需要使用通配符%

select * from 工程设计表 where 节点id like '%a_1_1*%' and 隶属工程id='1' order by 节点id
------解决思路----------------------
Access可以设置 SQL89 或者 SQL92 语法模式。其实这个不兼容性造成了麻烦。
------解决思路----------------------
其实这并不是什么“vb.net有一种转换机制”,如果真的有转换机制那么它就不会只让你用一种语法、而不能用另外一种语法了。这是因为使用了最近的驱动或者你的本地系统的配置被最新的access版本修改过了。实际上这是不兼容性的表现(真正的兼容性,应该是允许新旧两种通配符同时使用)。
  相关解决方案