废话我不多说了,麻烦各位帮忙看看
/**
* @(#)mymain.java
* @名称:成绩管理系统
* @功能:输入用户名(wangyue)和密码(123456)进入系统(mykernel)
* 在系统对话框中,点击“打开”则打开一新窗口;点击“输入”则弹出输入对话框(myinput);
* 点击“退出”则退出系统
* 在输入对话框中,可输入成绩。单击“退出”则返回系统对话框
*
* @author
* @version 1.00 2009/12/18
*/import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;
public class mymain extends JFrame implements ActionListener{
JLabel jName,jSec,jimage,jtxt; //用户名、密码、图像、文本
JTextField jT1; //输入用户名
JPasswordField jPw; //输入密码
JButton jLand,jLogin; //登陆、注册
ImageIcon image; //图像
Connection con = null;
Statement stmt = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
public mymain(){
super("学生管理系统"); //调用父类构造器
//布局
this.setLayout(null); //设置布局方式为手动布局
//文本布局
jtxt=new JLabel("因材施教");
jtxt.setFont(new Font("华文行楷",Font.PLAIN,30));
jtxt.setBounds(60,30,130,30);
//图标布局
image=new ImageIcon("1.jpg"); //创建图标对象
jimage=new JLabel(image); //创建标签对象
jimage.setBounds(65,70,110,110); //位置
//JLabel布局
jName = new JLabel("用户名");
jSec = new JLabel("密码");
jName.setBounds(25,200,60,20);
jSec.setBounds(25,230,60,20);
//JTextField和JPasswordField布局
jT1 = new JTextField("",6);
jPw = new JPasswordField("",20);
jT1.setBounds(90,200,100,20);
jPw.setBounds(90,230,100,20);
//JButton布局
jLand = new JButton("登陆");
jLogin = new JButton("注册");
jLand.setBounds(45,270,60,30);
jLogin.setBounds(150,270,60,30);
//布局结束
//注册监听器(必须在new的后面)
jLand.addActionListener(this);
jLogin.addActionListener(this);
//添加到窗口
getContentPane().add(jtxt);
getContentPane().add(jimage);
getContentPane().add(jName);
getContentPane().add(jSec);
getContentPane().add(jLand);
getContentPane().add(jLogin);
getContentPane().add(jT1);
getContentPane().add(jPw);
this.setSize(250,350); //设置窗口大小
this.setResizable(false); //设置无法改变窗口大小
this.setVisible(true); //设置窗口
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置默认退出方式
}
//事件处理
public void actionPerformed(ActionEvent e) {
String Uname = null,Upwd = null;
Uname = "fail";
//登陆按扭处理
if(e.getSource()==jLand){
//连接数据库
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=xk;user=sa;password=sa405"; try {
// System.out.println("^_^");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// System.out.println("XOX");
con = DriverManager.getConnection(connectionUrl);
// System.out.println("XOX..");
String Uinfo = "SELECT UserName,UserPwd FROM Login";
// System.out.println("XXX");
stmt = con.createStatement();
// System.out.println("000");
rs1 = stmt.executeQuery(Uinfo);
// System.out.println("111");
System.out.println(rs1.getRow());
Uname = rs1.getString(0);
// System.out.println("222");
Upwd = rs1.getString(1);
}catch(Exception ex){
System.out.println(e);//捕捉异常
}
finally{
try {
stmt.close();
con.close();
}catch(Exception ex){
System.out.println(e);//捕捉异常
}
// System.out.println("四了");
}
//System.out.println("["+Uname + "] [" + Upwd + "]");
if((jT1.getText().equals(Uname))&&(jPw.getText().equals(Upwd))){
this.hide();
// mykernel m = new mykernel(this,"管理系统"); //进入mykernel
JOptionPane.showMessageDialog(this,"登陆成功" + Uname);
}
else{
JOptionPane.showMessageDialog(this,"登陆失败" + Uname);
}
}
//注册按扭处理
else if(e.getSource()==jLogin){
// mylogin m = new mylogin(this,"注册帐号"); //进入mylogin
JOptionPane.showMessageDialog(this,"注册" + Uname);
}
}
public static void main(String args[]){
mymain f = new mymain();
}
}
我数据库的 Login 表中有 “用户名(UserName)”和“密码(UserPwd)”两例,里边暂时只有一条数据
但是执行不了数据库查询,读取不到用户名和密码程序中用到图片,没有可能执行不了(我不知道自己这个能不能传上去),如果各位拿不到,就把图片那几行代码注释掉麻烦各位帮我看看,很急!!
/**
* @(#)mymain.java
* @名称:成绩管理系统
* @功能:输入用户名(wangyue)和密码(123456)进入系统(mykernel)
* 在系统对话框中,点击“打开”则打开一新窗口;点击“输入”则弹出输入对话框(myinput);
* 点击“退出”则退出系统
* 在输入对话框中,可输入成绩。单击“退出”则返回系统对话框
*
* @author
* @version 1.00 2009/12/18
*/import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;
public class mymain extends JFrame implements ActionListener{
JLabel jName,jSec,jimage,jtxt; //用户名、密码、图像、文本
JTextField jT1; //输入用户名
JPasswordField jPw; //输入密码
JButton jLand,jLogin; //登陆、注册
ImageIcon image; //图像
Connection con = null;
Statement stmt = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
public mymain(){
super("学生管理系统"); //调用父类构造器
//布局
this.setLayout(null); //设置布局方式为手动布局
//文本布局
jtxt=new JLabel("因材施教");
jtxt.setFont(new Font("华文行楷",Font.PLAIN,30));
jtxt.setBounds(60,30,130,30);
//图标布局
image=new ImageIcon("1.jpg"); //创建图标对象
jimage=new JLabel(image); //创建标签对象
jimage.setBounds(65,70,110,110); //位置
//JLabel布局
jName = new JLabel("用户名");
jSec = new JLabel("密码");
jName.setBounds(25,200,60,20);
jSec.setBounds(25,230,60,20);
//JTextField和JPasswordField布局
jT1 = new JTextField("",6);
jPw = new JPasswordField("",20);
jT1.setBounds(90,200,100,20);
jPw.setBounds(90,230,100,20);
//JButton布局
jLand = new JButton("登陆");
jLogin = new JButton("注册");
jLand.setBounds(45,270,60,30);
jLogin.setBounds(150,270,60,30);
//布局结束
//注册监听器(必须在new的后面)
jLand.addActionListener(this);
jLogin.addActionListener(this);
//添加到窗口
getContentPane().add(jtxt);
getContentPane().add(jimage);
getContentPane().add(jName);
getContentPane().add(jSec);
getContentPane().add(jLand);
getContentPane().add(jLogin);
getContentPane().add(jT1);
getContentPane().add(jPw);
this.setSize(250,350); //设置窗口大小
this.setResizable(false); //设置无法改变窗口大小
this.setVisible(true); //设置窗口
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置默认退出方式
}
//事件处理
public void actionPerformed(ActionEvent e) {
String Uname = null,Upwd = null;
Uname = "fail";
//登陆按扭处理
if(e.getSource()==jLand){
//连接数据库
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=xk;user=sa;password=sa405"; try {
// System.out.println("^_^");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// System.out.println("XOX");
con = DriverManager.getConnection(connectionUrl);
// System.out.println("XOX..");
String Uinfo = "SELECT UserName,UserPwd FROM Login";
// System.out.println("XXX");
stmt = con.createStatement();
// System.out.println("000");
rs1 = stmt.executeQuery(Uinfo);
// System.out.println("111");
System.out.println(rs1.getRow());
Uname = rs1.getString(0);
// System.out.println("222");
Upwd = rs1.getString(1);
}catch(Exception ex){
System.out.println(e);//捕捉异常
}
finally{
try {
stmt.close();
con.close();
}catch(Exception ex){
System.out.println(e);//捕捉异常
}
// System.out.println("四了");
}
//System.out.println("["+Uname + "] [" + Upwd + "]");
if((jT1.getText().equals(Uname))&&(jPw.getText().equals(Upwd))){
this.hide();
// mykernel m = new mykernel(this,"管理系统"); //进入mykernel
JOptionPane.showMessageDialog(this,"登陆成功" + Uname);
}
else{
JOptionPane.showMessageDialog(this,"登陆失败" + Uname);
}
}
//注册按扭处理
else if(e.getSource()==jLogin){
// mylogin m = new mylogin(this,"注册帐号"); //进入mylogin
JOptionPane.showMessageDialog(this,"注册" + Uname);
}
}
public static void main(String args[]){
mymain f = new mymain();
}
}
我数据库的 Login 表中有 “用户名(UserName)”和“密码(UserPwd)”两例,里边暂时只有一条数据
但是执行不了数据库查询,读取不到用户名和密码程序中用到图片,没有可能执行不了(我不知道自己这个能不能传上去),如果各位拿不到,就把图片那几行代码注释掉麻烦各位帮我看看,很急!!
加一句就好了
rs1 = stmt.executeQuery(Uinfo); 后加 if(rs1.next){...//加入你的取字段代码}
但是 你的代码习惯不太好哦 这样结构比较乱 后期维护 会比较难看懂
类名首字母大写
// System.out.println("222");
Upwd = rs1.getString(1);
这两句也不对 "rs1.getString(0);"从1开始 没有0这个 index
能不能说明白些,DAO什么东东来的
rs1.next 那不是应该在处理多行的时候用吗
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;public class mymain extends JFrame implements ActionListener { JLabel jName, jSec, jimage, jtxt; // 用户名、密码、图像、文本
JTextField jT1; // 输入用户名
JPasswordField jPw; // 输入密码
JButton jLand, jLogin; // 登陆、注册
ImageIcon image; // 图像 Connection con = null;
Statement stmt = null;
ResultSet rs1 = null;
ResultSet rs2 = null; public mymain() { super("学生管理系统"); // 调用父类构造器 // 布局
this.setLayout(null); // 设置布局方式为手动布局
// 文本布局
jtxt = new JLabel("因材施教");
jtxt.setFont(new Font("华文行楷", Font.PLAIN, 30));
jtxt.setBounds(60, 30, 130, 30);
// 图标布局
image = new ImageIcon("1.jpg"); // 创建图标对象
jimage = new JLabel(image); // 创建标签对象
jimage.setBounds(65, 70, 110, 110); // 位置
// JLabel布局
jName = new JLabel("用户名");
jSec = new JLabel("密码");
jName.setBounds(25, 200, 60, 20);
jSec.setBounds(25, 230, 60, 20);
// JTextField和JPasswordField布局
jT1 = new JTextField("", 6);
jPw = new JPasswordField("", 20);
jT1.setBounds(90, 200, 100, 20);
jPw.setBounds(90, 230, 100, 20);
// JButton布局
jLand = new JButton("登陆");
jLogin = new JButton("注册");
jLand.setBounds(45, 270, 60, 30);
jLogin.setBounds(150, 270, 60, 30);
// 布局结束 // 注册监听器(必须在new的后面)
jLand.addActionListener(this);
jLogin.addActionListener(this); // 添加到窗口
getContentPane().add(jtxt);
getContentPane().add(jimage);
getContentPane().add(jName);
getContentPane().add(jSec);
getContentPane().add(jLand);
getContentPane().add(jLogin);
getContentPane().add(jT1);
getContentPane().add(jPw); this.setSize(250, 350); // 设置窗口大小
this.setResizable(false); // 设置无法改变窗口大小
this.setVisible(true); // 设置窗口
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置默认退出方式
} // 事件处理
public void actionPerformed(ActionEvent e) {
String Uname = null, Upwd = null;
Uname = "fail"; // 登陆按扭处理
if (e.getSource() == jLand) { // 连接数据库
String connectionUrl = "jdbc:sqlserver://localhost:1433;"
+ "databaseName=xk;user=sa;password=sa405"; try {
// System.out.println("^_^");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// System.out.println("XOX");
con = DriverManager.getConnection(connectionUrl);
// System.out.println("XOX..");
String Uinfo = "SELECT UserName,UserPwd FROM Login"; // System.out.println("XXX");
stmt = con.createStatement();
// System.out.println("000");
rs1 = stmt.executeQuery(Uinfo);
// System.out.println("111");
System.out.println(rs1.getRow());
if (rs1.next()) {
Uname = rs1.getString(1);
// System.out.println("222");
Upwd = rs1.getString(2);
}
} catch (Exception ex) {
System.out.println(e);// 捕捉异常
} finally {
try {
stmt.close();
con.close();
} catch (Exception ex) {
System.out.println(e);// 捕捉异常
}
// System.out.println("四了");
} // System.out.println("["+Uname + "] [" + Upwd + "]");
if ((jT1.getText().equals(Uname)) && (jPw.getText().equals(Upwd))) {
this.hide();
// mykernel m = new mykernel(this,"管理系统"); //进入mykernel
JOptionPane.showMessageDialog(this, "登陆成功" + Uname);
} else {
JOptionPane.showMessageDialog(this, "登陆失败" + Uname);
} } // 注册按扭处理
else if (e.getSource() == jLogin) {
// mylogin m = new mylogin(this,"注册帐号"); //进入mylogin
JOptionPane.showMessageDialog(this, "注册" + Uname);
} } public static void main(String args[]) {
mymain f = new mymain();
}}
要是多条记录就
while(rs.next()) {
rs.get....;
}
// System.out.println("XOX");
con = DriverManager.getConnection(connectionUrl);
// System.out.println("XOX..");
String Uinfo = "SELECT UserName,UserPwd FROM Login";
// System.out.println("XXX");
stmt = con.createStatement();
// System.out.println("000");
rs1 = stmt.executeQuery(Uinfo);
你都写到这了,下面就照着我说的写呗。
一条记录就
rs1.next();
Uname = rs1.getString(0);
Upwd = rs1.getString(1);
多条就
while(rs1.next()) {
Uname = rs1.getString(0);
Upwd = rs1.getString(1);
} 我说的很明白了吧。
将光标从当前位置向前移一行。ResultSet 光标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。 你需要调用一下next()的这个方法才能取得数据,原因如上所述。
把你从用户输入的账号和密码传到你实现的那个接口里,在从数据库中取出你的账号密码,然后对他们进行比较,如果相等,让他们返回一个true,否则返回false;你在if()判断中就调用接口中的方法,(它返回的是Boolean值)这样就可以判断了,由于时间关系,我没给你写代码,你自己理解一下,试试看。我以前也遇到过这样的问题,我就是这样解决的
。。试试吧!!!