[ODBC Microsoft Access Driver] 参数不足,期待是 1是什么方面的错误?

zidover 2003-10-17 04:50:07
...全文
482 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zidover 2003-10-17
  • 打赏
  • 举报
回复
测试代码:
import java.awt.event.*;
import java.awt.*;
import java.applet.*;


public class BeanTest6 extends Applet implements MouseListener
{
adduser cBean;
Button b;
TextField name;
TextField password;
TextField email;
TextField homepage;
Button bClose;

public void init()
{
//设置布局管理器
setLayout(new GridLayout(5,2));
//创建一个adduser实例
cBean=new adduser();
b=new Button("Register");
//给按钮b增加了事件监听者this,即按钮的单击事件将由BeanTest6来处理
b.addMouseListener(this);
add(new Label("name:"));
name=new TextField("",20);
add(name);
add(new Label("password"));
password=new TextField("",20);
add(password);
add(new Label("email"));
email=new TextField("",30);
add(email);
add(new Label("homepage"));
homepage=new TextField("",30);
add(homepage);
add(b);
bClose=new Button("close");
bClose.addMouseListener(this);
add(bClose);
}

public void destroy()
{
removeAll();
if(cBean!=null)
cBean.closeConnection();
}

public void mousePressed(MouseEvent e)
{
/*单击"Regeister"按钮,就将文本框中输入的用户名、密码、电子邮件、主页储存到user表格的一条新记录中*/
if(e.getSource()==b)
{
//设置cBean的属性值
cBean.setUsername(name.getText());
cBean.setPassword(password.getText());
cBean.setEmail(email.getText());
cBean.setHomepage(homepage.getText());
//如果用户名未重复,就将新用户的信息插入到数据库的表格中
if(cBean.checkUser())
cBean.addNewUser();
}
//按关闭按钮,退出应用程序
else if(e.getSource()==bClose)
{
System.out.println("I'm quitting!");
destroy();
System.exit(0);
}
}
public void mouseReleased(MouseEvent e){};
public void mouseEntered(MouseEvent e){};
public void mouseExited(MouseEvent e){};
public void mouseClicked(MouseEvent e){};
//定义了main方法,使得applet也可以作为应用程序独立运行
public static void main(String args[])
{
Frame f=new Frame("Beantest");
BeanTest6 bTest=new BeanTest6();
bTest.init();
bTest.start();
f.add("Center",bTest);
f.setSize(300,300);
f.show();
}

public String getAppletInfo()
{
return"A simple bean test program.";
}
}
zidover 2003-10-17
  • 打赏
  • 举报
回复
adduser.java,从db类派生出来,主要进行用户数据的读取以及添加操作,addNewUser()方法用来进行用户数据的添加,checkUser()方法用来检查用户名是否重复,另外还有些set/get方法用来对属性进行处理。
//import java.jdbc.driver.*;
import java.sql.*;
import java.lang.*;
//adduser由db派生出来,拥有db的成员变量和方法
public class adduser extends db
{
String Username="";
String Password="";
String Email="";
String Homepage="";

public boolean addNewUser()
{
boolean boadduser=false;
try
{
//进行用户注册的记录添加操作,生成sql语句
String sSql=new String("insert into user(username,password,email,homepage)");
sSql=sSql+" values('"+Username+"','"+Password+"','"+Email+"'+'"+Homepage+"')";
//一种调试方法,可以打印出sql语句,以便于查看错误
System.out.println(sSql);
//调用父类executeUpdate方法,并根据成功以否来设置返回值
if(super.executeUpdate(sSql))
boadduser=true;
}
catch(Exception ex)
{
System.err.println("adduser.addNewUser:"+ex.getMessage());
}
finally
{
//无论是否出错,都要返回值
return boadduser;
}
}
//checkUser()方法用来检测用户名是否重复,如果重复返回一个false
public boolean checkUser()
{
boolean boadduser=false;
try
{
//构建sql查询语句
String sSql="select * from user where username="+Username+"";
//调用父类的executeQuery方法
if((super.executeQuery(sSql)).next())
{
//查询出来的记录集不为空
boadduser=false;
}
else
{
boadduser=true;
}
}
catch(Exception ex)
{
System.err.println("adduser.addNewUser:"+ex.getMessage());
}
finally
{
return boadduser;
}
}
//属性的set/get方法,同请求的参数一致
//属性的用户名Username的get/set方法
public String getUsername()
{
return Username;
}
public void setUsername(String newUsername)
{
Username=db.toChinese(newUsername);
}
public void setPassword(String newPassword)
{
Password=newPassword;
}
//属性Email的get/set方法
public String getEmail()
{
return Email;
}
public void setEmail(String newEmail)
{
Email=newEmail;
}
//属性主页Homepage的get/set方法
public String getHomepage()
{
return Homepage;
}
public void setHomepage(String newHomepage)
{
Homepage=newHomepage;
}
}
zidover 2003-10-17
  • 打赏
  • 举报
回复
类文件db.java,封装了jdbc的驱动程序、连接数据库、访问USER表的一些操作,供继承它的子类直接使用:
import java.net.*;
import java.sql.*;
import java.lang.*;
import java.io.*;
import java.util.*;

public class db implements Serializable
{
static Connection conn=null;
//String ConnStr="jdbc:odbc:test";
Statement stmt=null;
ResultSet rs=null;
//db的构造函数
public db(){};

public static Connection getConnection()
{
try
{
//注册数据库驱动程序为ACCESS驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//建立数据库连接
conn=DriverManager.getConnection("jdbc:odbc:test");
}

catch(java.lang.ClassNotFoundException e)
{
//这样写是为了方便调试程序,出错打印mydb()就知道在什么地方出错了
System.err.println("mydb():"+e.getMessage());
}
catch(java.sql.SQLException e)
{
System.err.print("db():"+e.getMessage());
}
return conn;
}
//关闭数据库连接
public void closeConnection()
{
try
{
if(conn!=null)
conn.close();
}
catch(java.sql.SQLException e)
{
System.err.println("db():"+e.getMessage());
}
}

//入口参数为SQL语句,返回ResultSet对象
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
Connection conn1=getConnection();
if(conn1 !=null)
{
stmt=conn.createStatement();
//执行数据库查询操作
rs=stmt.executeQuery(sql);
}
}
catch(SQLException ex)
{
System.err.println("db.executeQuery:"+ex.getMessage());
}
return rs;
}

//executeUpdate方法用于进行add或者update记录的操作
//入口参数为SQL语句,成功返回true,否则为false

public boolean executeUpdate(String sql)
{
boolean bupdate=false;
try
{
//建立数据库连接
Connection conn1=getConnection();
if(conn1!=null)
{
stmt=conn.createStatement();
int rowCount=stmt.executeUpdate(sql);
//如果不成功,bupdate就返回0
if(rowCount!=0)
bupdate=true;

}
}
catch(SQLException ex)
{
System.err.println("db.executeUpdate:"+ex.getMessage());
}
return bupdate;
}

//toChinese方法用于将一个字符串进行中文处理
//或者将会是???这样的字符串
public static String toChinese(String strvalue)
{
try
{
if(strvalue==null)
{
return null;
}
else
{
strvalue=new String(strvalue.getBytes("ISO8859_1"),"GBK");
return strvalue;
}
}
catch(Exception e)
{
return null;
}
}
}

lynx1111 2003-10-17
  • 打赏
  • 举报
回复
数据库表名写错了,或者写掉了一列
反正就是库名,表名,列名有问题

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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