怎样在java程序中执行 SQL 语句

zhuyongjun 2010-06-27 10:49:06
废话我不多说了,麻烦各位帮忙看看


/**
* @(#)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)”两例,里边暂时只有一条数据
但是执行不了数据库查询,读取不到用户名和密码

程序中用到图片,没有可能执行不了(我不知道自己这个能不能传上去),如果各位拿不到,就把图片那几行代码注释掉

麻烦各位帮我看看,很急!!

...全文
330 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
魏江龙 2010-07-04
  • 打赏
  • 举报
回复
你还可以用这样的方法:
把你从用户输入的账号和密码传到你实现的那个接口里,在从数据库中取出你的账号密码,然后对他们进行比较,如果相等,让他们返回一个true,否则返回false;你在if()判断中就调用接口中的方法,(它返回的是Boolean值)这样就可以判断了,由于时间关系,我没给你写代码,你自己理解一下,试试看。我以前也遇到过这样的问题,我就是这样解决的
。。。。。试试吧!!!
java_shabake 2010-07-03
  • 打赏
  • 举报
回复
需要连接,在说也没有看到你的驱动!
zhuyongjun 2010-07-03
  • 打赏
  • 举报
回复
我已经找人帮我解决了,谢谢各位
ssh87 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 pangyongmeng 的回复:]
数据库没有连接上吧,用户名和密码都没有设置。你怎么连接?
[/Quote]。。。
shermantian 2010-07-01
  • 打赏
  • 举报
回复
定一个
pangyongmeng 2010-07-01
  • 打赏
  • 举报
回复
数据库没有连接上吧,用户名和密码都没有设置。你怎么连接?
zhuyongjun 2010-07-01
  • 打赏
  • 举报
回复
还是没有用
zhanlang9075 2010-06-29
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
sun0322 2010-06-29
  • 打赏
  • 举报
回复
next


将光标从当前位置向前移一行。ResultSet 光标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。

你需要调用一下next()的这个方法才能取得数据,原因如上所述。
  • 打赏
  • 举报
回复
没看见数据库的驱动程序呢,直接连接不行。
heying876 2010-06-29
  • 打赏
  • 举报
回复
----
heying876 2010-06-28
  • 打赏
  • 举报
回复
上面我发的 就是你的代码整理过后的 ·
linfir20 2010-06-28
  • 打赏
  • 举报
回复
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);
你都写到这了,下面就照着我说的写呗。
一条记录就
rs1.next();
Uname = rs1.getString(0);
Upwd = rs1.getString(1);
多条就
while(rs1.next()) {
Uname = rs1.getString(0);
Upwd = rs1.getString(1);
} 我说的很明白了吧。
zhuyongjun 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 linfir20 的回复:]
一条记录你就rs.next()一下,然后再rs.get...,
要是多条记录就
while(rs.next()) {
rs.get....;
}
[/Quote]

能不能把一条记录的写的详细些,前后语句是些什么
最好能结合我上边的代码写一下
zhuyongjun 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 heying876 的回复:]
开始 是在第一行之前 要滚一下 才到第一条记录
[/Quote]

我明白你的意思了,要先滚一下,怎么滚呢
heying876 2010-06-27
  • 打赏
  • 举报
回复
只读取到记录集没有下滚
加一句就好了
rs1 = stmt.executeQuery(Uinfo); 后加 if(rs1.next){...//加入你的取字段代码}
但是 你的代码习惯不太好哦 这样结构比较乱 后期维护 会比较难看懂
类名首字母大写
lxy15329 2010-06-27
  • 打赏
  • 举报
回复
没看见数据库的驱动程序呢,直接连接不行。我用的是MysqL,但是SqlServer也应该一样的吧
justwalking 2010-06-27
  • 打赏
  • 举报
回复
连接获得到了么?怀疑
teedry 2010-06-27
  • 打赏
  • 举报
回复
断点调试下看有没有执行数据库操作的语句,还有你应该把数据库的操作抽取出来,作为一个DAO来操作。
zhuyongjun 2010-06-27
  • 打赏
  • 举报
回复
忘了,最上边那几行 “功能”介绍那些不用理,我是在以前的代码上改的,那些现在没用的
加载更多回复(9)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧