永发信息网

java 关于对比数据库表结构前后变化情况。

答案:3  悬赏:40  手机版
解决时间 2021-04-11 19:16
要求列出变化的内容。并且显示到页面 对比 。之前已经写过触发器,最后给否决。因为无法实现跨数据库。现在要求是跑程序。熟悉的朋友给个思路 谢谢!

就是要求监测数据库里的表的结构变化
最佳答案
你用的什么数据库?几个?其实很简单,用查询语句查出表结构返回给程序,你可以把每次的查询结果放到一个文件里,然后比对。还有更简单的是做一个存储过程,返回差异内容给程序,然后设置定时执行
全部回答
没太明白你要做什么 数据库表结构前后的变化 ???字段的类型 长度那些??

数据库的建立应该不用再讲了吧,现在讲使用java与数据库进行交互

使用jdbc进行数据库的增删改查操作

1.下载microsoft sql server 2005 jdbc 驱动包jar文件

   将jar文件引入工程中

2.封装数据库链接的获取和关闭操作

import java.sql.*;

public class basedao {
 
 private static final string drive = "com.microsoft.sqlserver.jdbc.sqlserverdriver";

 
 private static final string url = "jdbc:sqlserver://localhost:1433;databasename=bbs";

 
 private static final string user = "sa";

 
 private static final string password = "";

 
 public static connection getconnection() throws exception {
  class.forname(drive);
  return drivermanager.getconnection(url, user, password);
 }

 
 public static void closeall(resultset resultset, preparedstatement pst,
   connection connection) throws exception {
  if (resultset != null)
   resultset.close();
  if (pst != null)
   pst.close();
  if (connection != null)
   connection.close();
 }

}

3.创建图书的实体类

public class book {
 
 private long id;

 
 private string author;

 
 private string name;
 
 public book() {
 }
 
 public book(long id, string author, string name) {
  this.id = id;
  this.author = author;
  this.name = name;
 }
 
 public string getauthor() {
  return author;
 }
 public void setauthor(string author) {
  this.author = author;
 }
 public long getid() {
  return id;
 }
 public void setid(long id) {
  this.id = id;
 }
 public string getname() {
  return name;
 }
 public void setname(string name) {
  this.name = name;
 }
}
4.创建与图书表交互的工具类

import java.sql.connection;
import java.sql.preparedstatement;
import java.sql.resultset;
import java.util.arraylist;
import java.util.list;

public class bookdao {
 
 public void addbook(book book) throws exception {
  // 连接
  connection connection = null;
  // 执行语句
  preparedstatement pst = null;
  try {
   connection = basedao.getconnection();
   // 构造执行语句
   string sql = "insert into book values(" + book.getauthor() + ","
    + book.getname() + ")";
   pst = connection.preparestatement(sql);
   pst.executeupdate();

  } catch (exception e) {
   // 抛出异常
   throw e;
  } finally {
   // 无论是否异常 均关闭数据库
   basedao.closeall(null, pst, connection);
  }
 }

 
 public list<book> getbooks() throws exception {
  // 用于存放查寻结果的集合
  list<book> books = new arraylist<book>();
  // 连接
  connection connection = null;
  // 执行语句
  preparedstatement pst = null;
  // 查询结果
  resultset resultset = null;
  try {
   connection = basedao.getconnection();
   // 构造查询语句
   string sql = "select * from book";
   pst = connection.preparestatement(sql);
   resultset = pst.executequery();

   // 循环读取查询结果行
   while (resultset.next()) {
    // getxxx的参数为数据表列名
    book book = new book(resultset.getlong("id"), resultset
    .getstring("author"), resultset.getstring("name"));
    // 将封装好的图书对象存入集合
    books.add(book);
   }
  } catch (exception e) {
   // 抛出异常
   throw e;
  } finally {
   // 无论是否异常 均关闭数据库
   basedao.closeall(resultset, pst, connection);
  }
  // 返回查询结果
  return books;
 }


}

当然 以上只是简单的封装 初学者可以在理解以上代码的基础上 进行更高级的封装
5.使用bookdao添加书籍和获取所有书籍列表

import java.util.list;


public class test {

 
 public static void main(string[] args) throws exception {
  //创建工具类对象
  bookdao dao = new bookdao();
  //创建一本图书
  book book = new book(null,"qq:495691293","编程菜鸟");
  //添加书籍到数据库
  dao.addbook(book);
  
  //获取所有图书列表
  list<book> books = dao.getbooks();
  //输出结果
  for (book b : books) {
   system.out.println(b.getid()+"\t"+b.getauthor()+"\t"+b.getname());
  }
 }

}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
山寨手机质量怎样?
我觉得李彦宏很帅你们呢
阿斗当皇帝下一句,临渊羡鱼的下一句
—__________haveyoustayedinNewYork?—Forab
常逛淘宝和拍拍的进。。
我不小心进去监狱了要怎样才能出来?
PHOTO7.0里图片移动的问题
表示人辛苦的句子,描写工作累辛苦的诗
感性是什么意思
问道仙子啊做多能升到所烧级?
菏泽高新区万福办事处冯庄行政村村地址在什么
单选题砹(At)是核电荷数最大的卤族元素,推测
财付通充钱充不进去,已经开通网上银行了
香洲区珠海废品站地址在哪里啊
如图是某种生物的细胞结构模式图,请据图回答
推荐资讯
The headmaster hurried to the concert hall
父母让我学医,可我一点都不喜欢这个职业怎么
孩子问我他从那里来的,我应该怎么回答
数学问题!六年级的奥数
已知f(x)=sin(2x+φ)+cos(2x+φ)为奇函
寻求免费新婚祝福网页?
脸痒起小疙瘩怎么回事,脸上痒 起小疙瘩
要怎样让那个人知道我喜欢他?
968群号多少?
Tom? Are you in bed yet? called Mrs White.
牛顿说:“企图仅以祷告祈求上帝的祝福,来取
2010年国家公务员,2009年6月毕业的算应届吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?