放在datasource/表,表名为:user,表中字段为:name password upnum
有关的代码为:
denglu.jsp
int n;
String temp1=new String();
String temp2=new String();
temp1=request.getParameter("txtname");
temp2=request.getParameter("txtpassword");
n=temp1.length()*temp2.length();
if (n==0){
%>
<p>您的输入有误,请重新输入!</p>
<p><a href="login.jsp">返回</a></p>
<%
}
else {
String tempuser=new String();
String tempid=new String();
int tempupnum;
String url=new String();
url="jdbc:odbc:denglu";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT * FROM user WHERE name='"+temp1+"'and password='"+temp2+"'");
if (rs.next()){
tempuser=rs.getString("name");
tempid=rs.getString("password");
tempupnum=rs.getInt("upnum")+1;
rs.close();
%>
<%
int i=stmt.executeUpdate("UPDATE user SET upnum="+ Integer.toString(tempupnum)+"WHERE name='"+temp1+"'");
session.putValue("name",tempuser);
%>
<p><b>用户<%=tempuser%>(<%=tempid%>),您好!</b></p>
<p><b>您上站已经<%=tempupnum%>次。</b></p>
<p><b>本窗口提供客户交易分析服务</b></p>
<p><a href="index1.jsp">查询明细</a></p>
<p><a href="index2.jsp">分析交易</a></p>
<%
}
else{
%>
<p>这个用户不存在,请重新登陆。</p>
<p><a href="login.jsp">返回</a></p>
<%
}
stmt.close();
con.close();
当不输入时,显示是正确的,但输入后,出现如下错误信息:
org.apache.jasper.JasperException: [Microsoft][ODBC SQL Server Driver][SQL Server]在关键字 'user' 附近有语法错误。
7 个解决方案
#1
("SELECT * FROM user WHERE name='"+temp1+"'and password='"+temp2+"'");
把这个SQL语句打出来,看看在SQL2000里能执行吗?
就知道那错了,
应该是语法错误
把这个SQL语句打出来,看看在SQL2000里能执行吗?
就知道那错了,
应该是语法错误
#2
ResultSet rs=stmt.executeQuery("SELECT * FROM user WHERE name='"+temp1+"' and password='"+temp2+"'");
注意and前面有个空格
你自己可以把sql语句打印出来看看
注意and前面有个空格
你自己可以把sql语句打印出来看看
#3
除了上述原因以外,因为你用的是JDBC_ODBC连接方式,所以要设定ODBC数据源,更要注意的是在数据源中指定默认的数据库(!!!)。
在实际开发中最好采用直连的方式
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
下载SQLServer直连的驱动程序。
在实际开发中最好采用直连的方式
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
下载SQLServer直连的驱动程序。
#4
to :QJava(仅次于郎)
请问能说具体点吗?
请问能说具体点吗?
#5
to :windyloft(侠客行)
在SQL SERVER中进行语法检查时出现:
[Microsoft][ODBC SQL Server Driver][SQL Server]不能比较成排序text ntext 和image数据类型,除非使用IS NULL或LIKE运算符。
在SQL SERVER中进行语法检查时出现:
[Microsoft][ODBC SQL Server Driver][SQL Server]不能比较成排序text ntext 和image数据类型,除非使用IS NULL或LIKE运算符。
#6
to ;windyloft:
请问怎么回事情,代码如下:
SELECT * FROM [user] WHERE name='xxx' and password='xxx'
我的password的输入框是密码形式,但在数据库中是“text”形式,有没有问题?
请问怎么回事情,代码如下:
SELECT * FROM [user] WHERE name='xxx' and password='xxx'
我的password的输入框是密码形式,但在数据库中是“text”形式,有没有问题?
#7
建立系统数据源拷贝串
#1
("SELECT * FROM user WHERE name='"+temp1+"'and password='"+temp2+"'");
把这个SQL语句打出来,看看在SQL2000里能执行吗?
就知道那错了,
应该是语法错误
把这个SQL语句打出来,看看在SQL2000里能执行吗?
就知道那错了,
应该是语法错误
#2
ResultSet rs=stmt.executeQuery("SELECT * FROM user WHERE name='"+temp1+"' and password='"+temp2+"'");
注意and前面有个空格
你自己可以把sql语句打印出来看看
注意and前面有个空格
你自己可以把sql语句打印出来看看
#3
除了上述原因以外,因为你用的是JDBC_ODBC连接方式,所以要设定ODBC数据源,更要注意的是在数据源中指定默认的数据库(!!!)。
在实际开发中最好采用直连的方式
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
下载SQLServer直连的驱动程序。
在实际开发中最好采用直连的方式
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
下载SQLServer直连的驱动程序。
#4
to :QJava(仅次于郎)
请问能说具体点吗?
请问能说具体点吗?
#5
to :windyloft(侠客行)
在SQL SERVER中进行语法检查时出现:
[Microsoft][ODBC SQL Server Driver][SQL Server]不能比较成排序text ntext 和image数据类型,除非使用IS NULL或LIKE运算符。
在SQL SERVER中进行语法检查时出现:
[Microsoft][ODBC SQL Server Driver][SQL Server]不能比较成排序text ntext 和image数据类型,除非使用IS NULL或LIKE运算符。
#6
to ;windyloft:
请问怎么回事情,代码如下:
SELECT * FROM [user] WHERE name='xxx' and password='xxx'
我的password的输入框是密码形式,但在数据库中是“text”形式,有没有问题?
请问怎么回事情,代码如下:
SELECT * FROM [user] WHERE name='xxx' and password='xxx'
我的password的输入框是密码形式,但在数据库中是“text”形式,有没有问题?
#7
建立系统数据源拷贝串