新手学JAVA 求高人指点。关于按钮连接数据库响应事件的。 给出代码。没错误 但是运行点查询没反应。
B1.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEve...
B1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
class MouseAdapter
{
Connection con ; //声明Connetion对象
PreparedStatement sql ; //声明PreparedStatement对象
ResultSet res ; //声明ResultSet对象
public Connection getConnection()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载数据库驱动
System.out.println("数据库驱动加载成功");
con = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\db1.mdb");
System.out.println("数据库连接成功");
}
catch (ClassNotFoundException e) //加载异常
{
e.printStackTrace();
}
catch (SQLException e) //连接异常
{
e.printStackTrace();
}
try
{
String f = f1.getText().trim();
sql = con.prepareStatement("select * from student where Num = '"+f+"'"); //查询数据库
res = sql.executeQuery(); //执行SQL语句
while (res.next())
{
if(f1.getText().trim().length()==0)
{
JOptionPane.showMessageDialog(null, "用户名密码不允许为空");
}
if(f1.getText().trim().equals(res.getString("Num")))
{
JOptionPane.showMessageDialog(null, res.getString("sex"));
}
else{
JOptionPane.showMessageDialog(null, "用户名密码错误");
}
}
}
catch (SQLException ev){}
return con;
}
}
}
});
这是中间段代码。求解决。解决完了在追加全部分了。。
没多少分了。。。
虽然说不是重点。但是还是需求的嘛。跪求帮忙。谢谢啊。 展开
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
class MouseAdapter
{
Connection con ; //声明Connetion对象
PreparedStatement sql ; //声明PreparedStatement对象
ResultSet res ; //声明ResultSet对象
public Connection getConnection()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载数据库驱动
System.out.println("数据库驱动加载成功");
con = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\db1.mdb");
System.out.println("数据库连接成功");
}
catch (ClassNotFoundException e) //加载异常
{
e.printStackTrace();
}
catch (SQLException e) //连接异常
{
e.printStackTrace();
}
try
{
String f = f1.getText().trim();
sql = con.prepareStatement("select * from student where Num = '"+f+"'"); //查询数据库
res = sql.executeQuery(); //执行SQL语句
while (res.next())
{
if(f1.getText().trim().length()==0)
{
JOptionPane.showMessageDialog(null, "用户名密码不允许为空");
}
if(f1.getText().trim().equals(res.getString("Num")))
{
JOptionPane.showMessageDialog(null, res.getString("sex"));
}
else{
JOptionPane.showMessageDialog(null, "用户名密码错误");
}
}
}
catch (SQLException ev){}
return con;
}
}
}
});
这是中间段代码。求解决。解决完了在追加全部分了。。
没多少分了。。。
虽然说不是重点。但是还是需求的嘛。跪求帮忙。谢谢啊。 展开
2个回答
展开全部
楼主的编程习惯不好哦。匿名类中居然还套着个内部类。
而且你的实现策略错误了。
按照你的写法是在点击按钮的事件中声明了一个鼠标点击类,类中的getConnection()是真正应该执行的代码块。
建议1:
把class MouseAdaper类和getConnection方法去掉。只留执行代码。
建议2:
不是修改代码,我希望楼主修正下逻辑。你的逻辑比较混乱,getConnection()作用就是加载数据驱动,DriverManager创建一个Connection。
连接数据库,读取ResultSet后,你却在那里判断文本框是否为空。这个逻辑很诡异。我觉得你的思路有问题,别光copy,先学思路。
而且你的实现策略错误了。
按照你的写法是在点击按钮的事件中声明了一个鼠标点击类,类中的getConnection()是真正应该执行的代码块。
建议1:
把class MouseAdaper类和getConnection方法去掉。只留执行代码。
建议2:
不是修改代码,我希望楼主修正下逻辑。你的逻辑比较混乱,getConnection()作用就是加载数据驱动,DriverManager创建一个Connection。
连接数据库,读取ResultSet后,你却在那里判断文本框是否为空。这个逻辑很诡异。我觉得你的思路有问题,别光copy,先学思路。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询