1 看错误日志中具体的error信息
在httpd的配置文件中的虚拟主机节看一下错误日志的path。
<VirtualHost *:8800>
DocumentRoot "E:/web/php/googlePHP/demo/"
ErrorLog "logs/8800.err.log"# 这个就是日志路径了,查看下其中执行到那步报错的
...
2 在程序的几个关键环节再加几个echo输出来调试,如在$sql行后加类似 echo $sql看执行到那一步出错的。
html只能通过ajax接口跟后台数据库接口通信,然后取出来的数据在页面上显示。以下是一个例子:
html文件suggest.html:
<html>
<head>
<meta http-equiv="content-type" content="text/htmlcharset=UTF-8">
<script language="JavaScript" type="text/javascript" src="ajax_search.js"></script>
<style type="text/css" media="screen">
body {
font: 11px arial
}
.suggest_link {
background-color: #FFFFFF
padding: 2px 6px 2px 6px
cursor:hand
}
.suggest_link_over {
background-color: #E8F2FE
padding: 2px 6px 2px 6px
}
#search_suggest {
position:relative
background-color: #FFFFFF
text-align: left
border: 1px solid #000000
left: -12px
top: 1px
height: 74px
width: 170px
display:none
}
</style>
</head>
<body background="bg.gif">
<center>
<h3>实现搜索提示</h3>
<div style="width: 500px">
<input type="text" id="txtSearch" name="txtSearch" onKeyUp="searchSuggest()" autocomplete="off" />
<input type="submit" id="cmdSearch" name="cmdSearch" value="搜索"/><br />
<div id="search_suggest"></div>
</div>
</center>
</body>
</html>
ajax_search.js:
var searchReq = createAjaxObj()
function createAjaxObj()
{
var httprequest=false
if (window.XMLHttpRequest) //为非IE浏览器生成XmlHttpRequest对象
{
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType) httprequest.overrideMimeType('text/xml')
}
else if (window.ActiveXObject) //为IE浏览器生成XmlHttpRequest对象
{
try
{
httprequest=new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e)
{
try
{
httprequest=new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
return httprequest
}
function searchSuggest()
{
if (searchReq.readyState == 4 || searchReq.readyState == 0)
{
var str = escape(document.getElementById('txtSearch').value)
searchReq.open("GET", 'search?search=' + str, true)//向服务器端发送请求
searchReq.onreadystatechange = handleSearchSuggest//设置回调函数
searchReq.send(null)
}
}
function handleSearchSuggest()
{ //这是回调函数,处理从服务器端返回的信息
if (searchReq.readyState == 4)
{
var ss = document.getElementById('search_suggest')
ss.innerHTML = ''
var str = searchReq.responseText.split("\n")
for(i=0i <str.length - 1i++)
{
var suggest = '<div onmouseover="javascript:suggestOver(this)" '
suggest += 'onmouseout="javascript:suggestOut(this)" '
suggest += 'onclick="javascript:setSearch(this.innerHTML)" '
suggest += 'class="suggest_link">' + str[i] + '</div>'
ss.innerHTML += suggest
ss.style.display="block"
}
}
}
function suggestOver(div_value)
{
div_value.className = 'suggest_link_over'
}
function suggestOut(div_value)
{
div_value.className = 'suggest_link'
}
function setSearch(value)
{
document.getElementById('txtSearch').value = value
document.getElementById('search_suggest').innerHTML = ''
document.getElementById('search_suggest').style.display="none"
}
servlet文件SearchSuggest.java:
package com
import java.sql.Connection
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException
import java.sql.Statement
import java.util.ArrayList
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
public class SearchSuggest extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException
{
response.setCharacterEncoding("UTF-8")
String search = request.getParameter("search")//接受参数值
String sql = "select GoodsName from Goods where GoodsName like '"+search+"%' order by GoodsName"//设置查询语句
Connection conn = null
Statement stmt = null
ResultSet rs = null
ArrayList vData = new ArrayList()
java.io.PrintWriter out = response.getWriter()
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")//注册数据库连接驱动
String MdbPath = "F:/sneaker/Tomcat/webapps/search/database/#costume.mdb"
String url= "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}DBQ=" + MdbPath
conn = DriverManager.getConnection(url)
stmt = conn.createStatement()
rs = stmt.executeQuery(sql)//执行查询
while (rs.next())
{
vData.add(rs.getString("GoodsName"))
}
StringBuilder buf = new StringBuilder()
for (int i=0i<vData.size()i++)
{
String keyword = (String)vData.get(i)
buf.append(keyword+"\n")
}
out.print(buf.toString())//向客户端输出信息
} catch (Exception e) {
e.printStackTrace()
} finally {
try {
if (stmt != null)
stmt.close()
if (conn != null)
conn.close()
} catch (SQLException sqle) {
}
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException
{
doPost(request, response)
}
}
HTML是无法读取数据库的,HTML是页面前端脚本语言,要想从HTML网页中获取SQL数据库里的数据,需要借助JSP或ASP或PHP或RUBY等语言来实现。
SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base table);存储模式(内模式)称为“存储文件”(stored file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。
扩展资料
SQL语言的组成:
1、一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
2、一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
3、一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
5.用户可以用SQL语句对视图和基本表进行查询等 *** 作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL和Ada语言等。
参考资料:百度百科▬SQL数据库
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)