package source2;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class JdbcConnection implements ActionListener
{
Connection conn;
JButton jb1=new JButton("插入");
JTextField jt1=new JTextField(8);
JTextField jt2=new JTextField(8);
JTextField jt3=new JTextField(8);
JTextField jt4=new JTextField(8);
JTextField jt5=new JTextField(8);
public JdbcConnection()
{
JFrame jf=new JFrame("插入框架");
jf.setBounds(400,300,500,400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp=new JPanel();
JLabel jl1=new JLabel("请输入要插入的学号:");
JLabel jl2=new JLabel("请输入要插入的姓名:");
JLabel jl3=new JLabel("请输入要插入的性别:");
JLabel jl4=new JLabel("请输入要插入的年龄:");
JLabel jl5=new JLabel("请输入要插入的院系:");
jb1.addActionListener(this);
jp.add(jl1);
jp.add(jt1);
jp.add(jl2);
jp.add(jt2);
jp.add(jl3);
jp.add(jt3);
jp.add(jl4);
jp.add(jt4);
jp.add(jl5);
jp.add(jt5);
jp.add(jb1);
jf.add(jp);
jf.setVisible(true);
}
public void insert()
{
String Sno=jt1.getText();
String Sname=jt2.getText();
String Ssex=jt3.getText();
int Sage=Integer.parseInt(jt4.getText());
String Sdept=jt5.getText();
try
{
PreparedStatement psm=conn.prepareStatement("insert into 学生表Students values(?,?,?,?,?)");
psm.setString(1,Sno);
psm.setString(2,Sname);
psm.setString(3,Ssex);
psm.setInt(4, Sage);
psm.setString(5,Sdept);
psm.executeUpdate();
psm.close();
conn.close();
JOptionPane.showMessageDialog(null,"记录保存成功!");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"插入失败!");
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb1)
insert();
}
public static void main(String args[])
{
String url="jdbc:odbc:source2";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(url,"sa","");
System.out.println("连接成功!");
}
catch(Exception e)
{
System.out.println("连接失败!");
}
new JdbcConnection();
}
}
哪位大侠能帮小弟看看这段代码有什么错?编译没错,数据库也能连接成功,就是插不进数据,都弄了将近一天了,郁闷!(数据源是source2)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class JdbcConnection implements ActionListener
{
Connection conn;
JButton jb1=new JButton("插入");
JTextField jt1=new JTextField(8);
JTextField jt2=new JTextField(8);
JTextField jt3=new JTextField(8);
JTextField jt4=new JTextField(8);
JTextField jt5=new JTextField(8);
public JdbcConnection()
{
JFrame jf=new JFrame("插入框架");
jf.setBounds(400,300,500,400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp=new JPanel();
JLabel jl1=new JLabel("请输入要插入的学号:");
JLabel jl2=new JLabel("请输入要插入的姓名:");
JLabel jl3=new JLabel("请输入要插入的性别:");
JLabel jl4=new JLabel("请输入要插入的年龄:");
JLabel jl5=new JLabel("请输入要插入的院系:");
jb1.addActionListener(this);
jp.add(jl1);
jp.add(jt1);
jp.add(jl2);
jp.add(jt2);
jp.add(jl3);
jp.add(jt3);
jp.add(jl4);
jp.add(jt4);
jp.add(jl5);
jp.add(jt5);
jp.add(jb1);
jf.add(jp);
jf.setVisible(true);
}
public void insert()
{
String Sno=jt1.getText();
String Sname=jt2.getText();
String Ssex=jt3.getText();
int Sage=Integer.parseInt(jt4.getText());
String Sdept=jt5.getText();
try
{
PreparedStatement psm=conn.prepareStatement("insert into 学生表Students values(?,?,?,?,?)");
psm.setString(1,Sno);
psm.setString(2,Sname);
psm.setString(3,Ssex);
psm.setInt(4, Sage);
psm.setString(5,Sdept);
psm.executeUpdate();
psm.close();
conn.close();
JOptionPane.showMessageDialog(null,"记录保存成功!");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"插入失败!");
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb1)
insert();
}
public static void main(String args[])
{
String url="jdbc:odbc:source2";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection(url,"sa","");
System.out.println("连接成功!");
}
catch(Exception e)
{
System.out.println("连接失败!");
}
new JdbcConnection();
}
}
哪位大侠能帮小弟看看这段代码有什么错?编译没错,数据库也能连接成功,就是插不进数据,都弄了将近一天了,郁闷!(数据源是source2)
解决方案 »
- NetBeans开发java界面字体问题
- ConcurrentLinkedQueue的size()方法问题
- 寻一个jdk下载地址!!
- 请教个Java日期类转换问题
- 找JBUILDER生成EXE文件的详细步骤或说明,在JBUILDER2006上~~
- 怎样限制JTextField只能输入字母和数字,谢谢!!!
- 这个问题发何解决
- 谁有这样的例子,我给500分
- 问一下,大家都用什么开发工具java,在那里下载,那个容易
- 哪位大虾知道 Jbuilder4 for Linux 的序列号?它用的好像和 for windows 的不太一样。
- 求助:有关Jlist和JFileChooser的问题
- 正则表达式替换\为/
PreparedStatement psm=conn.prepareStatement("insert into 学生表Students values(?,?,?,?,?)");
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class Insertwuzi implements ActionListener
{
Connection conn=null;
Connection con=null;
Statement sm=null;
String command=null;
ResultSet rs=null;
JButton jb1=new JButton("插入");
JButton jb2=new JButton("查询");//查询
JTextField jt1=new JTextField(8);//输入框宽度
JTextField jt2=new JTextField(8);
JTextField jt3=new JTextField(8);
JTextField jt4=new JTextField(8);
JTextField jt5=new JTextField(8);
JTextField jt6=new JTextField(8);//查询
//JTextField jx1=new JTextField();//文本框
public Insertwuzi()
{
select();//显示数据库信息至控制台
JFrame jf=new JFrame("插入框架asus");
//setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的
jf.setBounds(400,300,500,400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp=new JPanel();
JLabel jl1=new JLabel("请输入要插入的学号:");
JLabel jl2=new JLabel("请输入要插入的姓名:");
JLabel jl3=new JLabel("请输入要插入的性别:");
JLabel jl4=new JLabel("请输入要插入的年龄:");
JLabel jl5=new JLabel("请输入要插入的院系:");
JLabel jl6=new JLabel("请输入名称:");//查询
jp.add(jl1);
jp.add(jt1);
jp.add(jl2);
jp.add(jt2);
jp.add(jl3);
jp.add(jt3);
jp.add(jl4);
jp.add(jt4);
jp.add(jl5);
jp.add(jt5);
jp.add(jb1);
jp.add(jl6);
jp.add(jt6);
jp.add(jb2);
//add("North",jp);
//jp.add(jx1,"Center");
//jx1.setEditable(false);
//text.append("查询被按下");
jf.add(jp);
jb1.addActionListener(this);
jf.setVisible(true);
}
public void select()
{
Statement sm=null;
String command=null;
ResultSet rs=null;
String url="jdbc:microsoft:sqlserver://127.0.0.1:1433";
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con=DriverManager.getConnection(url,"sa","");
con.setCatalog("mydata");//数据库名
System.out.println("连接成功!");
}
catch(Exception e)
{
System.out.println("连接失败!");
}
try
{
sm=con.createStatement();
command="select * from asus";
String name;
int age=0;
rs=sm.executeQuery(command);
if(!rs.next())
System.out.println("表名或列名输入有误");
else
{
System.out.println(" 查询结果为:");
System.out.println("name\tage");//输出所有数据
do
{
name=rs.getString("name");
age=rs.getInt("age");
System.out.println(name+age);//输出所有数据
}
while(rs.next());
}
}catch (Exception e) {
// TODO: handle exception
System.out.println("读取数据异常!");
}
} public void insert()
{
String Sno=jt1.getText();//学号
String Sname=jt2.getText();//姓名
String Ssex=jt3.getText();//性别
int Sage=Integer.parseInt(jt4.getText());//年龄
String Sdept=jt5.getText();//院系
try
{
conn=con;
PreparedStatement psm=conn.prepareStatement("insert into asus values(?,?)");
//psm.setString(1,Sno);
psm.setString(1,Sname);
//psm.setString(3,Ssex);
psm.setInt(2,Sage);
//psm.setString(5,Sdept);
psm.executeUpdate(); psm.close();
conn.close(); JOptionPane.showMessageDialog(null,"记录保存成功!");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"插入失败!");
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb1)
insert();
//if(e.getSource()==jb2)
// select();
}
public static void main(String args[])
{
new Insertwuzi();
}
}
2.我看到
System.out.println("连接成功!");
System.out.println("连接失败!");
这就很好,可以方便自己找错。
3.我建议你把SQL语句也打印出来,然后复制到数据库中执行一遍。很多新手都是SQL语句出的错。
4.insert into 学生表Students values(?,?,?,?,?) 表中是否有主键,序列?
5.如果SQL语句没问题,那么再打印 psm.executeUpdate(); 这个方法返回的是数据库受影响的行数,如果添加成功则>0,不成功则=0;
按3,4,5检查一遍,应该就可以找到问题。
// public final static String DRIVER ="com.microsoft.jdbc.sqlserver.SQLServerDriver"; // 2000数据库驱动
// public final static String URL = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=company"; // 2000url
public final static String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 2005数据库驱动
public final static String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=import"; // 2005 url
二,就是外键的问题了,外键先入NULL,然后在UPDATE
忘LZ注意