精华内容
下载资源
问答
  • 在Oracle数据库中有两条数据:444419920304001X 张亮、444419920304001x 张亮,在数据库中受主键约束,然而,将这些数据通过vs2013数据集绑定到Grid View中时,GridView不能正常显示,而是报错。将数据删除即可解决。...

    在Oracle数据库中有两条数据:444419920304001X 张亮、444419920304001x 张亮,在数据库中受主键约束,然而,将这些数据通过vs2013数据集绑定到Grid View中时,GridView不能正常显示,而是报错。将数据删除即可解决。

    初步猜想是VS2013中Grid view相关底层有问题,待验证。

    展开全文
  • 数据库中表table与视图view的区别

    千次阅读 2019-08-21 17:38:47
    select column1,column2…… from table,此时会出来一个结果,这个我们所看到结果是一个表样子,那么这个虚表就是一个视图view(为什么叫“虚表”,因为数据库中确实存在这个表,但是我们又能在显示器上看到...

    首先了解一下什么是视图。
    在我们查询的过程中,select column1,column2…… from table,此时会出来一个结果,这个我们所看到的结果是一个表的样子,那么这个虚表就是一个视图view(为什么叫“虚表”,因为数据库中确实不存在这个表,但是我们又能在显示器上看到一张表。强行解释)。也就是说,视图是一个查询逻辑所表现出来的东西,你可以在某一方面将它等同于查询逻辑。
    然而,我们可以create view,创建了视图之后,还可以将这个view作为表格供我们查询,即可以select * from view_name,那么是不是view逆袭变成了表呢,非也非也。这是因为我们在调用的一瞬间,触发了生成view的逻辑,从而暂时有了一张“虚表”供我们查询。
    是不是要疯了,这到底什么跟什么啊,那为什么有视图这种东西的存在???看下去:
    1)视图它是虚拟的表,不占用存储空间,所以如果是我们在进行复杂的查询过程,不想进行表套表的话,可以在中间生成视图,然后在下一步直接引用视图(当然,你也可以生成中间表。但是假如你的存储空间只有10w,生成的中间表需要占用8w的存储空间,生成表后你剩下2w想干啥,此时通过生成view就可以避免了)。这是视图的第一个好处。

    2)视图view是动态的。创建的视图来源于其他的实实在在的表,当随着时间的更新,表发生变化时,我们的视图所反应的内容其实也是变化的。而我们所生成的中间表固定了就是固定了,不会随着基表的变化而改变。因此,如果我们做任务所需要的表格是不断更新的,此时我们在中间创建视图是正确的选择,因为视图可以做到与时俱进。

    展开全文
  • Hello to all, I am using codeigniter i have one text field in my view page when user enter any name in that field related with my database table 'deals' the deals match with entered field are ...
  • 不能用json把数据库里面图片显示在中???初学mvc,不太懂
  • 1、根据事务隔离级别,我们已经知道读未提交、读已提交、可重复读、串行化,随着隔离级别加强,解决脏写、脏读、可重复读、幻读问题。 2、InnoDB 是 MySQL(mysql-5.1版本后) 默认存储引擎,InnoDB 默认...

    MySQL的ReadView

    前言

    1、根据事务的隔离级别,我们已经知道读未提交、读已提交、可重复读、串行化,随着隔离级别的加强,能解决脏写、脏读、不可重复读、幻读的问题。

    2、InnoDB 是 MySQL(mysql-5.1版本后) 默认的存储引擎,InnoDB 默认的隔离级别就是可重复读。在这个隔离级别下,开启事务之后,多次读写同一行数据,读到的值永远是一致。

    3、当 MySQL 执行写操作之前,会把即将被修改的数据记录到 undo log 日志里面。MySQL可从 undo log 日志中,读取到原插入、修改、删除之前的值,最终把值重新变回去,这就是回滚操作。

    undo log 版本链

    1、undo log 版本链是基于 undo log 实现的。undo log 中主要保存了数据的基本信息,比如说日志开始的位置、结束的位置,主键的长度、表id,日志编号、日志类型
    在这里插入图片描述

    此外,undo log 还包含两个隐藏字段 trx_id 和 roll_pointer。trx_id 表示当前这个事务的 id,MySQL 会为每个事务分配一个 id,这个 id 是递增的。roll_pointer 是一个指针,指向这个事务之前的 undo log。
    在这里插入图片描述

    2、例子
    执行:

    INSERT INTO student VALUES (1, '张三');
    

    产生:
    在这里插入图片描述

    继续执行:

    UPDATE student SET name='李四' WHERE id=1;
    

    产生:
    在这里插入图片描述

    继续执行:

    UPDATE student SET name='王五' WHERE id=1;
    

    产生:
    在这里插入图片描述

    为了保证事务并发操作时,在写各自的undo log时不产生冲突,InnoDB采用回滚段的方式来维护undo log的并发写入和持久化。回滚段实际上是一种Undo文件组织方式。

    ReadView 机制

    ReadView 其实就是一个保存事务ID的list列表。记录的是本事务执行时,MySQL还有哪些事务在执行,且还没有提交。(当前系统中还有哪些活跃的读写事务)

    它主要包含这样几部分:

    • m_ids,当前有哪些事务正在执行,且还没有提交,这些事务的 id 就会存在这里;
    • min_trx_id,是指 m_ids 里最小的值;
    • max_trx_id,是指下一个要生成的事务 id。下一个要生成的事务 id 肯定比现在所有事务的 id 都大;
    • creator_trx_id,每开启一个事务都会生成一个 ReadView,而 creator_trx_id 就是这个开启的事务的 id。

    这样在访问某条记录时,只需要按照下边的步骤判断该记录在版本链中的某个版本(trx_id)是否可见:
    1、trx_id < m_ids列表中最小的事务id
    表明生成该版本的事务在生成ReadView前已经提交,所以该版本可以被当前事务访问。
    2、trx_id > m_ids列表中最大的事务id
    表明生成该版本的事务在生成ReadView 后才生成,所以该版本不可以被当前事务访问。
    3、m_ids列表中最小的事务id < trx_id < m_ids列表中最大的事务id
    此处比如m_ids为[5,6,7,9,10]
    ①、若trx_id在m_ids中,比如是6,说明创建 ReadView 时生成该版本的事务还是活跃的,该版本不可以被访问。
    ②、若trx_id不在m_ids中,比如是8:说明创建 ReadView 时生成该版本的事务已经被提交,该版本可以被访问。

    一句话说:当trx_id在m_ids中,或者大于m_ids列表中最大的事务id的时候,这个版本就不能被访问。

    如果某个版本的数据对当前事务不可见的话,那就顺着版本链找到下一个版本的数据,继续按照上边的步骤判断可见性,依此类推,直到版本链中的最后一个版本,如果最后一个版本也不可见的话,那么就意味着该条记录对该事务不可见,查询结果就不包含该记录。

    例子:

    事务是可以并发执行的,现在有事务 A、事务 B 这两个事务,且这两个都没有提交。事务 A 将会执行多次读操作,来模拟可重复读中多次读取同一行数据的场景。事务 B 则会修改这一行数据。
    在这里插入图片描述

    事务 A 开启事务的时候会生成一个 ReadView,所以说这个 ReadView 的创建者就是事务 A,事务 A 的事务 id 是 10,所以 creator_trx_id 就是 10。

    此时,总共就只有事务 A、事务 B 这两个事务,而且它们都还没有提交,所以说 m_ids 会把这两个事务 id,10、18 都记录下来。min_trx_id 是 m_ids 里面的最小值,10、18 中最小的显然是 10。当前最大的事务 id 是 18,那么下一个事务的 id 就是 19,max_trx_id 就是 19。

    ReadView 生成之后,事务 A 就要去 undo log 版本链中读取值了。

    现在只有一条 undo log 日志,但这并不意味着事务 A 就能读到这条日志的值 X。它要先判断这行日志的 trx_id 是否小于当前事务的 min_trx_id。看图我们可以很轻松地发现,日志的 trx_id = 8 小于 ReadView 中 min_trx_id = 10。

    这就意味着,这个事务 A 开始执行之前,修改这行数据的事务已经提交了,所以事务 A 是可以查到值 X 的。

    在此基础上再增添一点操作,实现可重复读

    我们继续看,事务 A 第一次读完之后,事务 B 要修改这行数据了。undo log 会为所有写操作生成日志,所以就会生成一条 undo log 日志,并且它的 roll_pointer 会指向上一条 undo log 日志。

    在这里插入图片描述

    紧接着,事务 A 第二次去读这行数据了,情况如下图所示:
    在这里插入图片描述
    第一次读的时候,开启事务 A 的时候就生成了一个 ReadView

    此时事务 A 第二次去查询的时候,先查到的是 trx_id = 18 的那条数据,它会发现 18 比最小的事务编号 10 大。那就说明事务编号为 18 的事务,有可能它是读不到的。

    接着就要去 m_ids 里确认是否有 18 这条数据了。发现有 18,那就说明在事务 A 开启事务的时候,这个事务是没有提交的,它修改的数据就不应该被读到。

    事务 A 就会顺着 roll_pointer 指针继续往下找,找到了 trx_id = 8 这条日志,发现这条能读,读到的值任然是 x,与第一次读到的结果一致。实现可重复读。

    展开全文
  • //刚学习一些笔记和大家分享一下有什么改进地方希望大家指正    import java.awt.BorderLayout;  import java.awt.event.ActionEvent;  import java.awt.event.ActionListener;  import j
    [java] view plaincopy
    1. //刚学习的写的一些笔记和大家分享一下有什么不改进的地方希望大家能指正  
    2.   
    3. import java.awt.BorderLayout;  
    4. import java.awt.event.ActionEvent;  
    5. import java.awt.event.ActionListener;  
    6. import java.sql.ResultSet;  
    7. import java.sql.ResultSetMetaData;  
    8. import java.sql.SQLException;  
    9. import java.sql.Statement;  
    10. import java.util.Vector;  
    11.   
    12. import javax.swing.JButton;  
    13. import javax.swing.JFrame;  
    14. import javax.swing.JLabel;  
    15. import javax.swing.JMenu;  
    16. import javax.swing.JMenuBar;  
    17. import javax.swing.JMenuItem;  
    18. import javax.swing.JPanel;  
    19. import javax.swing.JScrollPane;  
    20. import javax.swing.JTable;  
    21. import javax.swing.JTextField;  
    22. import javax.swing.table.DefaultTableModel;  
    23.   
    24. public class MainHome {  
    25.     public static void main(String[] args) {  
    26.         Window win = new Window();  
    27.         win.setTitle("小学期作业");  
    28.     }  
    29.   
    30. }  
    31.   
    32. class Window extends JFrame implements ActionListener {  
    33.     JMenuBar bar;  
    34.     JMenu menuQuery, menuDelete, menuView;  
    35.     JMenuItem delete, qurey, itemClose;  
    36.     JTextField text;  
    37.     JButton button;  
    38.     JLabel label;  
    39.     JPanel panel;  
    40.     JScrollPane jscrollpane;  
    41.     JTable table;  
    42.     DefaultTableModel dtm;  
    43.     Statement stmt;  
    44.     ResultSet rs;  
    45.     ResultSetMetaData rsmd;  
    46.     DataBaseConnection dbc = new DataBaseConnection();  
    47.   
    48.     Window() {  
    49.         init();  
    50.         setBounds(300100850550);  
    51.         setVisible(true);  
    52.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    53.     }  
    54.   
    55.     public void init() {  
    56.         setLayout(new BorderLayout());  
    57.         // 菜单条和菜单  
    58.         bar = new JMenuBar();  
    59.         menuQuery = new JMenu("查询");  
    60.         menuDelete = new JMenu("删除");  
    61.         menuView = new JMenu("更新");  
    62.   
    63.         bar.add(menuQuery);  
    64.         bar.add(menuDelete);  
    65.         bar.add(menuView);  
    66.         setJMenuBar(bar);  
    67.   
    68.         // 文件菜单  
    69.         qurey = new JMenuItem("查询");  
    70.         qurey.addActionListener(this);  
    71.         menuQuery.add(qurey);  
    72.         delete = new JMenuItem("删除");  
    73.         delete.addActionListener(this);  
    74.         menuDelete.add(delete);  
    75.   
    76.         // 插入数据  
    77.         text = new JTextField(16);  
    78.         button = new JButton("删除");  
    79.         label = new JLabel("删除数据");  
    80.         panel = new JPanel();  
    81.         panel.add(label);  
    82.         panel.add(text);  
    83.         panel.add(button);  
    84.         button.addActionListener(this);  
    85.         add(panel, BorderLayout.SOUTH);  
    86.   
    87.     }  
    88.   
    89.     @SuppressWarnings({ "unchecked""rawtypes""deprecation" })  
    90.     @Override  
    91.     public void actionPerformed(ActionEvent e) {  
    92.         Vector colum = new Vector();  
    93.         Vector rows = new Vector();  
    94.   
    95.         // 查询  
    96.         if (e.getSource() == qurey) {  
    97.             rs = dbc.executeQuery("SELECT * FROM employee");  
    98.             try {  
    99.                 rsmd = rs.getMetaData();  
    100.                 for (int i = 1; i <= rsmd.getColumnCount(); ++i)  
    101.                     colum.addElement(rsmd.getColumnName(i));  
    102.                 while (rs.next()) {  
    103.                     Vector currow = new Vector();  
    104.                     for (int i = 1; i <= rsmd.getColumnCount(); ++i) {  
    105.                         currow.addElement(rs.getString(i));  
    106.                     }  
    107.                     rows.addElement(currow);  
    108.                 }  
    109.                 table = new JTable(rows, colum);  
    110.                 add(table, BorderLayout.CENTER);  
    111.                 table.setVisible(true);  
    112.                 table.setRowHeight(50);  
    113.                 add(new JScrollPane(table), BorderLayout.CENTER);  
    114.                 // table.setFillsViewportHeight(true);  
    115.   
    116.             } catch (SQLException e1) {  
    117.                 // TODO Auto-generated catch block  
    118.                 e1.printStackTrace();  
    119.             }  
    120.             show();  
    121.   
    122.         }  
    123.   
    124.     }  
    125.   
    126. }  

    数据库连接部分

    [java] view plaincopy
    1. //数据库的连接  
    2. import java.sql.Connection;  
    3. import java.sql.DriverManager;  
    4. import java.sql.ResultSet;  
    5. import java.sql.SQLException;  
    6. import java.sql.Statement;  
    7.   
    8. public class DataBaseConnection {  
    9.       
    10.     Connection con = null;  
    11.     Statement sql = null;  
    12.     ResultSet rs = null;  
    13.   
    14.     public DataBaseConnection() {  
    15.   
    16.         // shujuku  
    17.         try {  
    18.             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 加载驱动  
    19.         } catch (ClassNotFoundException e) {  
    20.             System.out.println(e);  
    21.         }  
    22.         try {  
    23.             con = DriverManager.getConnection("jdbc:odbc:star"""""); // 连接数据库  
    24.   
    25.         } catch (SQLException e) {  
    26.             System.out.println(e);  
    27.         }  
    28.     }  
    29.   
    30.     // 查询  
    31.     public ResultSet executeQuery(String sql_s) {  
    32.         try {  
    33.             sql = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,  
    34.                     ResultSet.CONCUR_READ_ONLY);  
    35.             rs = sql.executeQuery(sql_s);  
    36.         } catch (SQLException e) {  
    37.             System.out.println(e);  
    38.         }  
    39.         return rs;  
    40.     }  
    41.   
    42.     // update操作  
    43.     public int executeUpdate(String sql_s) {  
    44.   
    45.         int rs = 0;  
    46.         try {  
    47.             sql = con.createStatement();  
    48.             rs = sql.executeUpdate(sql_s);  
    49.         } catch (SQLException e) {  
    50.             System.out.println(e);  
    51.         }  
    52.   
    53.         return rs;  
    54.     }  
    55.   
    56.     // 关闭数据库  
    57.     public void close() {  
    58.         if (rs != null) {  
    59.             try {  
    60.                 rs.close();  
    61.             } catch (SQLException e) {  
    62.                 // TODO Auto-generated catch block  
    63.                 e.printStackTrace();  
    64.             }  
    65.         }  
    66.         if (con != null) {  
    67.             try {  
    68.                 con.close();  
    69.             } catch (SQLException e) {  
    70.                 // TODO Auto-generated catch block  
    71.                 e.printStackTrace();  
    72.             }  
    73.         }  
    74.   
    75.     }  
    76.   
    77. }  
    78. //还有很多功能没有实现,后面有时间再补上!!Ps:正在学习中~~~  
    展开全文
  • 原文出自... 分析:数据是保存缓存而未提交到数据库中 解决办法: hibernate.cfg.xml里面加入  [html] view plain copy property name="connection
  • [size=medium] http://space.itpub.net/7478833/viewspace-487416 本文介绍了数据库设计中的14个技巧,这是许多人...对于这些经验运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步...
  • MVC集成medoo数据库框架

    千次阅读 2016-05-19 15:02:39
    这段时间实习时候,我一直使用一个phpMVC框架,想着有时间自己也写一个简单MVC...C是Controller,功能是进行数据处理,因为一般情况下,从数据库中读取数据是不能直接展示,从view层得到数据也不能直接
  • (最新版上已修复会直接close掉)1、selectPage 方法 in查询 不能查出数据,但是把sql语句Oracle 是可以查询出来。2、把sql语句Oracle 是可以查询出来重现步骤报错信息无报错。: ==> Preparing: SELECT ...
  • 主要作用是让所有人都看到整张表。 比如有个员工信息表,里面有联系方式,薪资等,可能只希望HR看到薪资,其他人只能看到联系方式,那么就可以使用视图来实现。 高效:复杂连接查询,每次执行时效率比较低,...
  • 其次像魅族、小米等手机拿到ROOT以后不能执行su命令,所以无法给手机中的文件授权,需要下载一个SuperSU权限管理器 有了他们我们就可以开始下面步骤了: 1.window->show view->other 2. 输入 file ...
  • 索引是数据库的一个对象,它不能独立存在,必须对某个表对象进行依赖。 提示:索引保存information_schema数据库里的STATISTICS表。 创建索引方式: 自动:当表上定义主键约束、唯一、外键约束时,该表会被...
  • 但我的view是动态生成的,比如传给TestAction的id是1,那么就读取数据库,取出id为1那条记录的html模板,然后将此模板动态生成为1.jsp(里面是有struts2的标签的),然后TestAction再去解析。 我问的是,tomcat...
  • 保存在数据库的数据是相对稳定的,并且可以被数据库高效地应用和处理,因此标准的应用效率和可靠性获得极大的提高; 利用“文件汇编”用户可以将精力集中于研究和解决发现的问题,而非寻找适用的条文。 1.4.4 数据库...
  • 初学者想做一个反馈小程序,目前已经完成了反馈页面(通过微信名作为用户名传递反馈信息到数据库)和PHP后台页面,现在想小程序添加一个类似于个人中心页面,查看当前登录微信用户所提交反馈。...
  • form使用form,(这样一来,可以form是随便按数据库字段定义,而一定需要数据库字段实例,且form里东东,html时可以引用,也可以模拟。但form本身后端验证功能都生效) view使用formview。 写完for....
  • 因为交换操作顺序而影响最终结果,所以我们才能网络或者硬件临时故障时候记录下所有操作或者恢复几分钟甚至几小时之前丢失数据。这 种性质初次部署是尤其有用。可交换写操作简化了新数据块创建流程...
  • 视图与表(有时为与视图区别,也称表为基本表--Base Table)不同,视图是一个虚表,即视图所对应数据进行实际存储,数据库中只存储视图定义,对视图数据进行操作时,系统根据视图定义去操作与视图相关联...
  • 我可以添加 info 到 dB ,但是不能删除 dB 中的任何数据。 final SQLManager hon = new SQLManager(this); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) ...
  • 视图视图行和列来自定义视图查询使用表,并且是使用视图时动态生成。创建视图Create view 视图名字 as ( 单表 or 多表 or 视图) Create / Replace [algorithm = {undefined | merge | temptable }] view...
  • 1.DELETE语句执行删除过程是每次从表删除一行,并且同时将该行删除...删除行是不能恢复。并且删除过程不会激活与表有关删除触发器。执行速度快。 TRUNCATE 只能对TABLE;DELETE可以是table和view ...
  • form使用form,(这样一来,可以form是随便按数据库字段定义,而一定需要数据库字段实例,且form里东东,html时可以引用,也可以模拟。但form本身后端验证功能都生效)view使用formview。写完form_valid...
  • 数据库设计范式

    2014-11-18 23:13:33
    第一范式 任何一个关系数据库中,第一范式(1...所谓第一范式(1NF)是指数据库每一列都是不可分割基本数据项,同一列中不能有多个值,即实体中某个属性不能有多个值或者不能有重复属性。如果出现重复
  • mysql数据库删除数据三种方式:

    万次阅读 2018-08-20 15:32:33
    直接删除表中的某一行数据,并且同时将该行删除操作作为事务记录日志保存以便进行进行回滚操作。所以delete相比较truncate更加占用资源,数据空间释放,因为需回滚。对table和view操作 truncate table ...
  • 数据库基础

    2012-09-22 16:27:04
    §10.1.6 查询中不让记录被更新 217 §10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not in和Not Exists 218 §10.1.9 关于 COPY命令 218 §10.1.10 列值为NULL情形处理 219 §10.1.11 使用 product_user_...
  • 转自:http://dev.yesky.com/243/2230743.shtml另外一篇:http://www.vckbase.com/document/viewdoc/?id=1215ADO(ActiveX Data Object)是Microsoft数据库应用程序开发新接口,是建立OLE DB之上高层数据库访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 631
精华内容 252
关键字:

在数据库的view中不能