java与数据库连接的问题

就是插入数据时出错,根本就没有写入数据!
问题解决加分200!
留个qq 我的qq406255652
连接的是sqlserver2000
最新回答
净雅

2020-08-21 08:37:06

给你一个我的例子:这是连接数据库的类:
package mypackage;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class ConnectionData {
Connection myCon;
Statement myStatement;
public ConnectionData() {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("成功加载驱动");
}catch(ClassNotFoundException e1){
e1.printStackTrace();
JOptionPane.showMessageDialog(null,"加载数据库驱动失败!","提示",JOptionPane.YES_OPTION );
}
try{
myCon=DriverManager.getConnection("jdbc:odbc:MyPhoneDataSource");
myStatement=myCon.createStatement();
System.out.println("成功连接数据源");
}catch(SQLException sqe){
JOptionPane.showMessageDialog(null,"连接数据源失败!","提示",JOptionPane.YES_OPTION );
sqe.printStackTrace();
}
}
public int UpdateData(String sql){
int result = 0;
try {
result=myStatement.executeUpdate(sql);
}catch (SQLException e) {
JOptionPane.showMessageDialog(null,"sql语句执行失败!","错误提示",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
return result;
}
public ResultSet QueryData(String sql){
ResultSet result = null;
try {

result=myStatement.executeQuery(sql);
}catch(SQLException e) {
JOptionPane.showMessageDialog(null,"sql语句执行失败!","错误提示",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
return result;
}
public void closeData()
{
try {
myStatement.close();
myCon.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这是用户注册的类,里面有插入语句:
package mypackage;
import javax.swing.*;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserLogin extends JDialog implements ActionListener{
private static final long serialVersionUID = 1L;
JLabel label1,label2;
JTextField textfield1,textfield2;
JButton button1,button2;
int myResultSet1=0;
ResultSet result;
public UserLogin(){
setTitle("用户注册");
this.setLayout(null);
label1=new JLabel("请输入用户名");
label1.setBounds(20,5,180,20);
textfield1=new JTextField(30);
textfield1.setBounds(110,5,100,25);
textfield1.addActionListener(this);

label2=new JLabel("请输入密码");
label2.setBounds(20,40,80,20);
textfield2=new JTextField(30);
textfield2.setBounds(110,40,100,25);
textfield2.addActionListener(this);

button1=new JButton("确定");
button1.setBounds(40,80,80,30);
button1.addActionListener(this);

button2=new JButton("取消");
button2.setBounds(130,80,80,30);
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}
});

add(label1);
add(textfield1);
add(label2);
add(textfield2);
add(button1);
add(button2);

this.getContentPane().setBackground(Color.cyan);
this.setModal(true);
this.setLocation(440,280);
this.setSize(260,180);
this.setVisible(true);

}

public void actionPerformed(ActionEvent arg0) {
String inusername,inpassword;
inusername=textfield1.getText();
inpassword=textfield2.getText();
String sqllogin="insert into usertable values ('"+inusername+"','"+inpassword+"')";
String sqlfind="select * from usertable where username='"+inusername+"'";

if(inusername.equals(""))
{
JOptionPane.showMessageDialog(null,"用户名为空,请重新输入","提示", JOptionPane.WARNING_MESSAGE) ;
}
else if(inpassword.equals(""))
{
JOptionPane.showMessageDialog(null,"密码为空,请重新输入","提示", JOptionPane.WARNING_MESSAGE);

}
else{
ConnectionData object=new ConnectionData(); //建立连接
result=object.QueryData(sqlfind);
try {
if(result.next()){
JOptionPane.showMessageDialog(null,"用户名已存在,请重新输入","提示", JOptionPane.WARNING_MESSAGE);
textfield1.setText("");
textfield2.setText("");
}
else{
myResultSet1=object.UpdateData(sqllogin);
if(myResultSet1!=0){
JOptionPane.showMessageDialog(null,"用户注册成功!","提示",JOptionPane.INFORMATION_MESSAGE);
dispose();

}
}
} catch (SQLException e) {
e.printStackTrace();
}
object.closeData(); //断开连接

}
}
}

插入语句是:String sqllogin="insert into usertable values ('"+inusername+"','"+inpassword+"')";
这个例子连接的是ACCESS数据库,希望能帮上你的忙。
海心

2022-10-21 23:53:22

这种问题我也碰见过,当然如果是你sql语句写错了,那就不要怪我们了。那说说我的情况

我要插入数据的表,有关联这张表的外键,当你仅仅插入这个表中的时候,而关联这张表的外键所在的表没有相应数据的话,就会报错。

有什么具体问题就加534867553吧,我现在刚好下班,大约将近一个小时到家。
初心

2021-12-01 14:41:58

private static Connection connection = null;
public static synchronized Connection getConnection() {
if (connection == null) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

connection = DriverManager.getConnection("jdbc:sqlserver://MYSERVER;databaseName=MYDATABASE",
"USERID", "PASSWORD");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
return connection;
}

这就是一个简单的得到数据库连接代码;

插入数据报错??将错误的信息发在这上面...

有问题就用百度Hi 找我
夏凉浮生

2021-01-01 06:25:08

连的什么数据库?
ms sql?或是
mysql?

写入可能问题
1 java的代码出错,根本没执行写入的代码
2 数据库写入脏数据等,被回滚数据

建议用try catch 捕捉异常

楼主多半是调试不熟悉
山水闲人

2021-10-24 14:46:39

说清楚点啊
收起 3条折叠回答