谁能给个java的小例子,实现swing调用sql的表,并能进行增删改查操作。
基本的连接数据库方法,DBhelper,调用方法传sql语句就行了,数据库地址和用户密码改成你自己的,增删查改都能做,手打的,多学习多分享养成好习惯,网上很多的,这代码哪里不懂搜一搜基本都出来了,弄懂了基本就能做增删查改了
package auditUseCaces;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction;
import com.google.common.hash.BloomFilter;
public class DBhelper {
public static Connection conn = null;
public static void main(String[] args) {
//插入的字段
boolean isenable = true;
Time time = null;
// 往user插用户,ID从1开始
int id = 1;
//循环插入10条数据
for (int i = 0; i <= 9; i++) {
id++;
String sql = "insert into user values(" + id + ",'app" + id
+ "','123'," + isenable + "," + time + ")";
sqlexcuteUpdate(sql, "root", "secsmarts");
}
}
/**
* 打开数据库
*
* @return
*/
public static Connection sqlconnection(String username, String password) {
// 声明一个数据库driver
String driver = "com.mysql.jdbc.Driver";
// 声明数据库链接字符串
String loclhost = "jdbc:mysql://ip:port/secsmarts?" + "user="
+ username + "&password=" + password + ""
+ "&useUnicode=true&characterEncoding=UTF-8";
// 加载驱动
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
System.out.println("驱动加载失败...");
e.printStackTrace();
}
// 链接数据库
try {
conn = DriverManager.getConnection(loclhost);
return conn;
} catch (SQLException e) {
System.out.println("链接失败...");
e.printStackTrace();
return conn;
}
}
/**
* 返回结果集
*
* @param sql
* @return resulset
*
*/
public static ResultSet sqlexcuteQuery(String sql, String username,
String password) {
try {
// 连接数据库
sqlconnection(username, password);
// 执行sql语句
PreparedStatement ps = conn.prepareStatement(sql);
// 获取返回结果集
ResultSet rows = ps.executeQuery(sql);
int count = 0;
if (rows != null) {
while (rows.next()) {
count += 1;
}
System.out.println(count);
System.out.println("成功");
}
rows.close();
ps.close();
conn.close();
return rows;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
/**
* 返回行数
*
* @param sql
* @return int
*/
public static int sqlexcuteUpdate(String sql, String username,
String password) {
try {
sqlconnection(username, password);
PreparedStatement ps = conn.prepareStatement(sql);
int up = ps.executeUpdate();
if (up >= 0) {
System.out.println(up);
}
ps.close();
conn.close();
return up;
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
}
/**
* 返回结果集
*
* @param sql
* @return boolean
*/
public static boolean sqlexcute(String sql, String username, String password) {
try {
sqlconnection(username, password);
PreparedStatement ps = conn.prepareStatement(sql);
boolean bl = ps.execute();
if (bl = true) {
System.out.println("成功!");
}
ps.close();
conn.close();
return bl;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
/**
* 关闭Connection服务
*/
public static void ServerClose() {
try {
if (conn.isClosed() == false) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java连接数据库,你可以用一些框架,比如hibernate,iBATIS等,这样方便一点,否则你就用JDBC吧,自己写sql语句:
JDBC连接数据库
•创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过java.lang.Class类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驱动程序类 ,加载驱动失败!");
e.printStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("数据库连接失败!");
se.printStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
其次在你的swing中定义一个table,然后实例化你定义的这个model,然后用table.setMode(DefaultTableModel),把你实例化的那个model传入到table中,这样就会在tabale中显示了你要的结果,至于你说要与数据库连接操纵,这里你就需要加入相关的鼠标listener了,在这个例子中,我给你加入了删除和修改两个操作,就是当对这表格点击鼠标的时候,会出现相应的选择。这你需要用到JPopupMenu, 和JPopupMenu的元素JMenuItem了
首先给你tablemodel的类:
//这个类定义了你如何在表格中显示数据和如何获得表格中的数据,需要把二维数组传入这个类,所以在构造函数中传入了二维数组
public class FriendTableModel extends DefaultTableModel {
private String[] columns = {"学号","姓名","性别","年龄","邮箱"};
private Object a[][];
public FriendTableModel(Object [][] a) {
this.a=a;
}
public Object getUserAt(int rowIndex)
{
Object[] u = a[rowIndex];
return u;
}
public void removeRow(int row) {
a[row]=null;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Object[] u = a[rowIndex];
switch(columnIndex) {
case 0:
return u[0];
case 1:
return u[1];
case 2:
return u[2];
case 3:
return u[3];
case 4:
return u[4];
default:
return "";
}
}
@Override
public int getColumnCount() {
return columns.length;
}
@Override
public int getRowCount() {
if (a==null) return 0;
return a.length;
}
@Override
public boolean isCellEditable(int r, int c) {
return false;
}
@Override
public String getColumnName(int columnIndex) {
return columns[columnIndex];
}
}
然后给你主类,这个类中包含了与数据连接,把数据转换二维数组,定义各个操作的listener,等
public class DataFrame extends JFrame implements ActionListener
{
public static void main(String args[])
{
new DataFrame();
}
Connection con;
Statement stmt;
ResultSet rs;
Object a[][]; //这里的a[][]就是一个i行j列的表,用来显示数据库中数据用的
Object b[]; //从tablemode返回的一行数据, 当你修改数时,向数据库更新的时候,数据从这个对象中获得;
int row;//你修改或者要删除的行
int i=0; //输据的条数
JTable jTable = null;//用来显示表格
JPopupMenu jPopupMenu;//用来显示你对表格的操作
private JMenuItem delete; //删除操作
private JMenuItem upload;//修改操作
Object header[]={"学号","姓名","性别","年龄","邮箱"};//e是一个j列的表头,用来存储字段名称的,比如说上面的"学号","姓名"等字符串
DataFrame()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e)
{
System.out.println("Error:"+e);
}
try{
con=DriverManager.getConnection("jdbc:odbc:mySql","sa","123");
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery("select * from student");
while(rs.next())//把数据库数据写入二维数组
{
a[i][0]=rs.getInt(1);
a[i][1]=rs.getString(2);
a[i][2]=rs.getString(3);
a[i][3]=rs.getInt(4);
a[i][4]=rs.getString(5);
i++;
}
}
catch(SQLException e)
{
System.out.println("SqlError:"+e);
}
jTable = new JTable();
jTable.addMouseListener(new inMouseEven()); //给鼠标定义事件,就是你点击鼠标的时候,会发生的事情
jTable.setShowGrid(false);
jPopupMenu = new JPopupMenu();
delete = new JMenuItem();
delete.setText("删除");
delete.addMouseListener(new Delete_mouseAdapter());//给点击删除时增加事件
upload = new JMenuItem();
upload.setText("修改");
upload.addMouseListener(new Uoload_mouseAdapter());//给点击更新时增加事件
jPopupMenu.add(delete);
jPopupMenu.add(upload);
FriendTableModel ftm = new FriendTableModel(a); //实例化tablemodel,把二维数组传进去
if (ftm.getRowCount() > 0) {
jTable.setModel(ftm);//把Tablemodel传入table中
}
Container con=getContentPane();
getContentPane().add(new JScrollPane(jTable),BorderLayout.CENTER);
setSize(400,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
//当你点击表格中的一行,出现选项,让你选择具体操作,此处是点击鼠标事件的具体代码
private class inMouseEven extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() < 1) {
return;
}
row = jTable.getSelectedRow(); //返回你点击的行数
if (row >= 0) {
FriendTableModel ftm =(FriendTableModel) jTable.getModel();
b= ftm.getUserAt(row ); //返回此行的数据
jPopupMenu.show(DataFrame.this, e.getX() + 160, e.getY() + 75);//出现操作选项
}
}
}
//删除操作的listenr,对应的code
private class Delete_mouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
try {
String sql = "delete from **where id = " + b[0]; //此处b[]是上面当你点击鼠标是返回的那一行数据,b[]中对应的是表格中一行数据。
stmt.executeQuery(sql);
FriendTableModel ftm =(FriendTableModel) jTable.getModel();
ftm.removeRows(0, row );
jTable.updateUI();
} catch (SQLException ex) {
Logger.getLogger(DataFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
//更新操作对应的code
private class Uoload_mouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
String sql ="UPDATE Student SET Address = %s, City = %s WHERE id = %s" %b[1],b[2],b[0]...//这里sql自己写,就是更新所有的数据,新数据从b[...]中获得
stmt.executeQuery(sql);
}
}
}
其中一些sql语句没有给你写出,这个你照着你的数据库写,还有数据库的链接你需要改一下,上面的代码没有经过测试,因为我没有链接数据库,但是整体思路就应该是这样,对应你的具体要求,修改代码,我想应该可以运行起来的,你需要去理解这些代码,然后写出sql语句,给出正确的数据库配置,修改其中可能的错误。
所有代码都是亲手写的,希望对刚接触java的你有用。
如果你从中得到帮助,记得肯定我的劳动,给我分哦。
如果要写出来代码太多了,给你个思路:JTable本身只是一个框架,它不承载数据,你看到的数据,也就是表格中的数据,其实是TableModel在显示,TableModel里面包含了一系列的增、删、改、查,相信你能看得懂API的,别人给你例子,永远都是别人的,除非你自己写出来。如果再不会,我们再联系
你可以用JDBC连接数据库!import java.sql.*;
public class db {
String conURL="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)}; "+"DBQ=db.mdb";
private Connection Ex1Con=null;
private Statement st=null;
private ResultSet rs=null;
public db()
{
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
try {
Ex1Con=DriverManager.getConnection(conURL);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
try {
st=Ex1Con.createStatement();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
//修改操作
public int exsql(String sql)
{
int num=0;
try {
st.executeUpdate(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return num;
}
//查询操作
public ResultSet exselect(String sql)
{
try {
rs=st.executeQuery(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return rs;
}
//添加操作
public int exinsert(String sql)
{int num=0;
try {
num=st.executeUpdate(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return num;
}
//删除操作
public int exdelete(String sql)
{int num=0;
try {
num=st.executeUpdate(sql);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
return num;
}
//关闭数据库
public void close()
{
rs=null;
try {
st.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
try {
Ex1Con.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
这是我写的一个连接数据库和对数据库操作的类,你参考参考!用SWING就是调用的问题!
帮忙给个java小游戏源程序
*1)主要部分已经集成为一个对象SnakeModel,利用键盘控制实现操作。***\/import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;\/\/===\/\/Main Class\/\/===public class GreedSnake implements KeyListener{JFrame mainFrame;Canvas paintCanvas;JLabel labelScore;\/...
谁能给个java的小例子,实现swing调用sql的表,并能进行增删改查操作...
其次在你的swing中定义一个table,然后实例化你定义的这个model,然后用table.setMode(DefaultTableModel),把你实例化的那个model传入到table中,这样就会在tabale中显示了你要的结果,至于你说要与数据库连接操纵,这里你就需要加入相关的鼠标listener了,在这个例子中,我给你加入了删除和修改两个操作,就...
求大神给一份JAVA小游戏,贪吃蛇或者俄罗斯方块源代码。my eclipse能直接...
import javax.swing.*;import java.awt.*;import java.awt.event.*;class Game extends JFrame implements KeyListener,Runnable { Thread Down10 = new Thread(this);GameCanvas test = new GameCanvas();JLabel LabelTetris = new JLabel("Tetris Game");JLabel ScorePrint1 = new JLabel("Sc...
谁给做个java小游戏
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Tetris extends JFrame { public Tetris() { TetrisPanel a = new TetrisPanel();addKeyListener(a.listener);add(a);JMenuBar menu = new JMenuBar();JMenu game = new JMenu("游戏");game.add("新游戏");...
跪求一些JAVA小游戏,300K以内,最好是小于200K的,告诉名字或给个网址...
推荐九游9game。Çn 单机版块的全部游戏都是完全免费的,用手机或电脑opera浏览器登陆,会自动筛选适合你手机的游戏。游戏有很多,分类也很齐全,即时、回合、角色、益智、动作、射击、棋牌、策略、冒险、养成等等
求任意一个Java应用小程序(编码、代码都可以)
给你一个排序的applet import java.awt.*;import java.applet.*;import java.awt.event.*;public class Test extends Applet implements ActionListener{ Label prompt;TextField input1,input2,input3;Button btn;int max,mid,min;boolean flag=false;public void init(){ prompt=new Label("请输入...
求一个JAVA 小程序 代码 1000行左右 能运行 立即给分!!!急急急...
JButton("取消"); private JRadioButton defunt= new JRadioButton("默认",true); private JRadioButton all= new JRadioButton("全盘"); private ButtonGroup bg=new ButtonGroup(); public Utatill() { super.setTitle("U盘文件恢复"); super.setAlwaysOnTop(true); super....
...新手接触时间不长,感到很棘手,求大神给个JAVA小程序,不要太千篇...
数组排序,按从小到大排列(若需要从大到小排列,则将if(a[i]>a[j])中的大于号换成小于号)public static void main(String[] args) { int []a={50,14,18,19,60,10};\/\/定义一个随机数组 for(int i=0;i<a.length;i++){ \/\/外循环将每一个数和其他的数进行比较 for(int j=i+...
求助一个开闭原则的JAVA小代码
public static void main(String[] args) { Fruit fruit;fruit = Gardener.NewFruit("apple");fruit.grow();fruit.Flowering();fruit.Fruiting();fruit = Gardener.NewFruit("pear");fruit.grow();fruit.Flowering();fruit.Fruiting();} } interface Fruit { void grow();void Flowering();void...
java 求大神帮我写个小程序,谢谢!(必定追加分数,我只想把分数留给对我...
import java.awt.Container;import java.awt.Dimension;import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;public class Curve extends JFrame { private Circle circle = new Circle();\/ 构造函数 \/ public Curve() { setTitle("DrawCurve[绘制一份沿着曲线运动的圆形]"...
黄刮硫酸: 很简单,如例:有一个jsp项目,叫:test把项目自动生成的index.jsp改为'reg-result.jsp'或新建一个jsp页面叫'reg-result.jsp'页面代码(在body中):<form action="DoResiter" method="post">name:<input type="text" name="name">...
新建县17589603072: 如何用Java实现C++中swap的交换功能: swap(int &a,int &b); { int temp; temp=a; a=b; b=temp; }?
黄刮硫酸:swap(int a,int b); { int temp; temp=a; a=b; b=temp; } 试试 上当了 sorry java传递不值拷贝的传递方式 http://www.programfan.com/club/showpost.asp?id=23810 看看这个吧 要用我那个 也是可以的 但是必须要 定义int val[2]={a,b} 然后传入swap(val[0],val[1])即可 别复制上去啊...我讲的原理...
新建县17589603072: 急急急!有人在吗? 谁帮我写一个简单的JAVA Swing例子 - ?
黄刮硫酸: import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; ...
新建县17589603072: 我想用java swing实现窗口嵌套,不知道应该怎么做.能给个示例吗? - ?
黄刮硫酸: c#的好啊 简单方便 开发工具也多 swing太麻烦了!布局太多布局管理器还不好用! 就netBeans这个开发工具还勉强方便点 但是不能在生成的程序里改代码! 必须用记事本复制出来改 忒麻烦!
新建县17589603072: 谁能给一个java序列化的简单例子???
黄刮硫酸: 一个简单的Java序列化的例子 import java.io.*; import java.util.*; class Data implements Serializable { // 实现序列话接口 private int n; public Data(int n) { this.n = n; } public String toString() { return Integer.toString(n); } } public class Worm implements ...
新建县17589603072: java编程实例 - ?
黄刮硫酸: 我是Java初学者,我看了你的问题后想了很久终于把它做出来了,你看看吧,方法不是很好,但能满足你的要求:import java.util.Scanner; public class Check2{ int t; char[] chs = new char[500]; //输入的句子不能超过500个字符 Check2() { String ...
新建县17589603072: 谁能给我个Java多线程的例子? - ?
黄刮硫酸: 第一种方法:直接继承Thread类. public class Test {public static void main(String[] args){ThreadClass t = new ThreadClass();t.start();System.out.println("end");//输出“end”} } class ThreadClass extends Thread //Thread类已经实现了空...
新建县17589603072: java数组实例(一维数组 二维数组) - ?
黄刮硫酸: //一维数组 String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组 str[0] = "a"; //赋值 str[1] = "b"; str[2] = "c"; str[3] = "d"; str[4] = "e"; //也可以创建并赋值 String[] str = {"a","b","c","d","e"}; //二...
新建县17589603072: JAVA用SWT写的界面,怎样把数据库里面的表显示在SWT的table中?并且实现修改查询删除功能. - ?
黄刮硫酸: 连接数据库后ResultSet rs = new dbLink.executeQuery(sql)//sql语句获取结果集rswhile(rs.next()){//每循...