首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小弟我写的这个数据库程序,在程序中添加的客户基本信息,没运行一次程序都增加一次,这是为什么啊

2011-12-30 
我写的这个数据库程序,在程序中添加的客户基本信息,没运行一次程序都增加一次,这是为什么啊??就是每运行一

我写的这个数据库程序,在程序中添加的客户基本信息,没运行一次程序都增加一次,这是为什么啊??
就是每运行一次程序都添加一次 张三 李四 王五的信息,三个三个的添加,我修改一个客户的信息是也是他们三个一起修改,就是三个三个的修改,改一个变三个,是不是我添加数据库信息的位置不对啊?大家给我挑挑毛病吧。

源程序1:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Database {

  public static Connection cn;
  public static Statement st;
  public static ResultSet rs;
   

  public static boolean joinDB() {
  boolean joinFlag;
  try {
  joinFlag = true;
  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  cn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sample","sa","605");
   
  cn.setCatalog("sample");
  System.out.println("数据库连接成功");
  st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
  ResultSet.CONCUR_READ_ONLY);
  st.execute("INSERT INTO Table3 VALUES ('admin','123')");
  st.execute("INSERT INTO Clientm VALUES ('张三','男','23')");
  st.execute("INSERT INTO Clientm VALUES ('李四','女','25')");
  st.execute("INSERT INTO Clientm VALUES ('王五','男','20')");
   
  return joinFlag;

  } catch (SQLException sqlEx) {
  System.out.println(sqlEx.getMessage());

  joinFlag = false;
  return joinFlag;

  } catch (ClassNotFoundException notfoundEX) {
  System.out.println(notfoundEX.getMessage());

  joinFlag = false;
  return joinFlag;
  }
  }

  public static boolean executeSQL(String sqlString) {
  boolean executeFlag;
  try {
  st.execute(sqlString);
  executeFlag = true;
  } catch (Exception e) {
  executeFlag = false;
  System.out.println("sql exception:" + e.getMessage());
  }
  return executeFlag;
  }


  public static boolean query(String sqlString) {

  try {
  rs = null;
   
  rs = st.executeQuery(sqlString);
  } catch (Exception Ex) {
  System.out.println("sql exception:" + Ex);
  return false;
  }
  return true;
  }
}


源程序2:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.*;
public class Land
{
public static void main(String[] args)
{
LandFrame frame=new LandFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}




class LandFrame extends JFrame
{
JFrame jf ;
JLabel labelWelcome = new JLabel("小区车辆管理系统");
JLabel labelName=new JLabel("用户名:");
JLabel labelPassword=new JLabel("密码:");
JTextField textName=new JTextField();
JPasswordField textPassword=new JPasswordField();
JButton buttonEnter=new JButton("登录");
JButton buttoncancel=new JButton("清空");

public LandFrame()
{
jf=this;
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();


int screenWidth=screenSize.width;
int screenHeight=screenSize.height;
setSize(screenWidth/4,screenHeight/4);
setLocation(screenWidth*3/8,screenHeight*3/8);
setTitle("登陆界面");

Font f = new Font("新宋体",Font.PLAIN,12);

Container con = getContentPane();
con.setLayout(null);

labelWelcome.setBounds(95,10,150,20);
labelWelcome.setFont(new Font("新宋体",Font.PLAIN,14));
con.add(labelWelcome);

labelName.setBounds(45,40,55,20);
labelName.setFont(f);
con.add(labelName);
textName.setBounds(95,40,120,20);
con.add(textName);

  labelPassword.setBounds(45,70,45,20);
  labelPassword.setFont(f);
con.add(labelPassword);
textPassword.setBounds(95,70,120,20);
con.add(textPassword);

  buttonEnter.setBounds(90,110,60,20);
buttonEnter.setFont(f);
con.add(buttonEnter);
buttonEnter.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent m){
if(textName.getText().equals("")){
new JOptionPane().showMessageDialog(null,"用户名不能为空!");
}
else if(textPassword.getText().equals("")){
new JOptionPane().showMessageDialog(null,"密码不能为空!");
}
else{
String sql="select * from Table3 where User_Name = '" + textName.getText() + "' and Password = '" + textPassword.getText()+ "'";
System.out.println(sql);
Judge(sql);
}
}
});

buttoncancel.setBounds(155,110,60,20);
buttoncancel.setFont(f);
con.add(buttoncancel);
buttoncancel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent m){
textName.setText("");
textPassword.setText("");
}
});
}
private void Judge(String sqlString) {

if (Database.joinDB()) {
if (Database.query(sqlString))
try{
if(Database.rs.isBeforeFirst()) {
System.out.println("密码正确");
jf.setVisible(false);
Database.cn.close();
new Main();
}
else {
System.out.println("错误");
new JOptionPane().showMessageDialog(null,"用户名或密码错误!","",JOptionPane.ERROR_MESSAGE);
}
}catch(Exception e) {
System.out.println(e.getMessage());
}
}
else{
System.out.println("连接数据库不成功!!!");
}
}
}


就是在 客户信息管理 这个里面我添加的信息总是运行一次加一次,我怀疑是不应该在Database中,joinDB这个方法中INSERT数据库信息。

[解决办法]
st.execute("INSERT INTO Table3 VALUES ('admin','123')");
st.execute("INSERT INTO Clientm VALUES ('张三','男','23')");
st.execute("INSERT INTO Clientm VALUES ('李四','女','25')");
st.execute("INSERT INTO Clientm VALUES ('王五','男','20')");
这些是在干什么
[解决办法]
public static boolean joinDB() { 
boolean joinFlag; 
try { 
joinFlag = true; 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
cn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sample","sa","605"); 

cn.setCatalog("sample"); 
System.out.println("数据库连接成功"); 
st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 


ResultSet.CONCUR_READ_ONLY); 
st.execute("INSERT INTO Table3 VALUES ('admin','123')"); 
st.execute("INSERT INTO Clientm VALUES ('张三','男','23')"); 
st.execute("INSERT INTO Clientm VALUES ('李四','女','25')"); 
st.execute("INSERT INTO Clientm VALUES ('王五','男','20')"); 
每连一次就插入一次
[解决办法]
你说重启程序就增加一次,那是肯定啦,,你增加瞧瞧,你只要一运行程序 你就会调那个joinDB()方法,那么肯定又会插入一次,那是必然的,你就不能把那几个插入的语句重新弄个构造方法或其他方法之类的分离出来啊


 st.execute("INSERT INTO Clientm VALUES ('张三','男','23')"); 
st.execute("INSERT INTO Clientm VALUES ('李四','女','25')"); 
st.execute("INSERT INTO Clientm VALUES ('王五','男','20')"); 

这里的问题的吧 你在表名前面加上你要更新的字段啊,那样可能能避免你更新1个修改3个的问题吧 ?
[解决办法]
正常
[解决办法]
st.execute("INSERT INTO Clientm VALUES ('张三','男','23')"); 
st.execute("INSERT INTO Clientm VALUES ('李四','女','25')"); 
st.execute("INSERT INTO Clientm VALUES ('王五','男','20')"); 

有这个每次调用都会添加

热点排行