public boolean connsqlandcheck(String lgname)
{
if(lgname==""|tf2.getText()=="")
return(false);
int num=0;
status.append("连接数据库"+"\n");
String sourceURL="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\我的文档\\testgrad\\user.mdb";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(sourceURL);
status.append("成功连接"+"\n");
Statement stmt=conn.createStatement();
ResultSet rset=stmt.executeQuery("select upassword from udata where uname ='"+lgname+"'");
status.append("已打开数据库!"+"\n");
while(rset.next())
{
if(tf2.getText()==rset.getString("upassword"))
{
num++;
status.append(rset.getString("upassword")+"\n");
}
else continue;
}
rset.close();
stmt.close();
conn.close();
status.append("数据库关闭!"+"\n");
}以上是程序的一部分,就是实现连接数据库,取出特定字段和已知字段比较(就是验证),可是也是能正常运行,就是没有结果,明明有这个字段,就是认为没有,
而我用来测试的另外一个完整的小程序,就是浏览数据库表的字段,却可以显示,我复制过来还是不行,请帮我看看:import java.sql.*;
public class TestsqlofAccess {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="feng";
String sourceURL="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\我的文档\\testgrad\\user.mdb";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(sourceURL);
Statement stmt=conn.createStatement();
ResultSet rset=stmt.executeQuery("select * from udata where uname ='"+str+"'");
System.out.println("id 姓名 密码");
while(rset.next())
{
System.out.println(rset.getInt("uid")+" "+rset.getString("uname")+" "+rset.getString("upassword"));
}
rset.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.getStackTrace();
}
}
}这个程序能正常运行!
上面的程序,我调试过,应该是while没有执行,也就是没有相应的字段,不过明明有这个字段,因为下面的测试程序能显示出结果来!
{
if(lgname==""|tf2.getText()=="")
return(false);
int num=0;
status.append("连接数据库"+"\n");
String sourceURL="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\我的文档\\testgrad\\user.mdb";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(sourceURL);
status.append("成功连接"+"\n");
Statement stmt=conn.createStatement();
ResultSet rset=stmt.executeQuery("select upassword from udata where uname ='"+lgname+"'");
status.append("已打开数据库!"+"\n");
while(rset.next())
{
if(tf2.getText()==rset.getString("upassword"))
{
num++;
status.append(rset.getString("upassword")+"\n");
}
else continue;
}
rset.close();
stmt.close();
conn.close();
status.append("数据库关闭!"+"\n");
}以上是程序的一部分,就是实现连接数据库,取出特定字段和已知字段比较(就是验证),可是也是能正常运行,就是没有结果,明明有这个字段,就是认为没有,
而我用来测试的另外一个完整的小程序,就是浏览数据库表的字段,却可以显示,我复制过来还是不行,请帮我看看:import java.sql.*;
public class TestsqlofAccess {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str="feng";
String sourceURL="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\我的文档\\testgrad\\user.mdb";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(sourceURL);
Statement stmt=conn.createStatement();
ResultSet rset=stmt.executeQuery("select * from udata where uname ='"+str+"'");
System.out.println("id 姓名 密码");
while(rset.next())
{
System.out.println(rset.getInt("uid")+" "+rset.getString("uname")+" "+rset.getString("upassword"));
}
rset.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
e.getStackTrace();
}
}
}这个程序能正常运行!
上面的程序,我调试过,应该是while没有执行,也就是没有相应的字段,不过明明有这个字段,因为下面的测试程序能显示出结果来!
所以next应该为空,while的内容没有执行
用do {} while