精华内容
下载资源
问答
  • #数据库--第3章 数据库更新

    千次阅读 2020-04-30 21:25:20
    #数据库--第3章 数据库更新一、插入数据  1、普通插入  2、插入子查询结果二、修改数据三、删除数据   这一章节将会介绍所有的数据库更新方法,使用的数据是 第一章 介绍和导入的数据。 一、插入数据   1、...


      这一章节将会介绍所有的数据库更新方法,使用的数据是 第一章 介绍和导入的数据。


    一、插入数据

      1、普通插入

      关键字:insert into …(…) values(…)
      注意:1、字段名不一定要全部出现,顺序也可以与表内不同,
         2、未出现的字段如果有自增属性则会自动加 1 ,否则置为 NULL
         3、若插入的数据不满足完整性约束则会拒接此次插入

    insert into region(R_REGIONKEY, R_NAME, R_COMMENT) values(5, 'China', 'i love china');
    

      2、插入子查询结果

      关键字:insert into …(…) select …
      注意:1、子查询结果字段数据类型须与表一致
         2、若插入的数据不满足完整性约束则会拒接此次插入

    -- 新建表,存储零件平均价格
    create table if not exists PARTAVGCOST(
    	AVG_PARTKEY		int		references PARTSUPP(PS_PARTKEY),
        ABG_SUPPLYCOST	float	null
    );
    -- 将平均价格插入表中
    insert into PARTAVGCOST(AVG_PARTKEY, ABG_SUPPLYCOST) select PS_PARTKEY, avg(PS_SUPPLYCOST) from partsupp group by PS_PARTKEY;
    

    二、修改数据

      关键字:update … set … [where …]
      注意:1、若没有 where 条件则默认修改全部数据,MySQL默认是禁止没有 where 条件的修改操作
         2、set 后面的赋值语句可以是常量、算术表达式、函数、另一列
         3、若修改的数据不满足完整性约束则会拒接此次修改


      2.1、直接修改

    update region set R_NAME='AAAA' where R_REGIONKEY=0;
    

      2.2、赋值为另一列

    update region set R_COMMENT=R_NAME where R_REGIONKEY=0;
    

      2.3、算术表达式赋值

    update partsupp set PS_SUPPLYCOST = PS_SUPPLYCOST + 1 where PS_PARTKEY > -1;
    

      2.4、函数赋值

    update partsupp set PS_SUPPLYCOST = round(PS_SUPPLYCOST) where PS_PARTKEY=1;
    

    三、删除数据

      关键字:delete from … [where…]
      注意:若没有 where 条件则默认删除全部数据,MySQL默认是禁止没有 where 条件的删除操作

    delete from orders where O_ORDERKEY = 1;
    

    展开全文
  • EF映射——从数据库更新实体

    万次阅读 热门讨论 2015-12-28 08:57:38
    最近在做ITOO项目,由于更新了数据库,需要重新从数据库映射到实体,本来看过关于EF的学习资料,直接可以从数据库更新到实体,但这种小事也是有很多问题的,必须在更新的时候做好选择。下面分享一下如何从数据库更新...

        最近在做ITOO项目,由于更新了数据库,需要重新从数据库映射到实体,本来看过关于EF的学习资料,直接可以从数据库更新到实体,但这种小事也是有很多问题的,必须在更新的时候做好选择。下面分享一下如何从数据库更新到实体,希望能够帮到大家。当然写一篇关于这个的总结,我也是受益良多。

    步骤:

        1、双击.edmx文件,如图

            

        2、出现下图的界面,在界面上右击,选择“从数据库更新模型”

           

        3、弹出弹框,按图中标注选择需要更新的表或视图

            注意:不要勾选“在模型中包括外键列”

           

            添加:选择添加的表、视图或存储过程

            刷新:从中选择要更新的表,即可更新已有的表

            删除:删除已映射的表

        4、点击完成,即可实现从数据库更新实体。

        

       总结:

        这个只是一个小问题,但如果我们不知道就会出现很多问题,不过我们正是在之前的问题中走过,才发现了解决问题的方法,这是一个过程,必须一步一步自己坚持走下去。在不断前进中发现自己不知道,正因为不知道所以才能知道。

    
    展开全文
  • Android数据库更新

    千次阅读 2019-04-24 17:54:44
    最近在写一个android开发框架的时候用到了ormlite,也稍微封装了一下。但是如果已经存在一个数据库,我要在其中一个表中插入某一列可怎么办呢?不止如此,我想删除某一列,修改某一列的... * 更新升级数据库,包括删...

    最近在写一个android开发框架的时候用到了ormlite,也稍微封装了一下。但是如果已经存在一个数据库,我要在其中一个表中插入某一列可怎么办呢?不止如此,我想删除某一列,修改某一列的数据类型,修改某个表的名字,这些需求在数据库需要经常修改字段的时候经常用到。而google一下发现其实数据库的一些语句其实是可以做到的,就是alter。
    下面贴上相关代码片段:

    /**
    	* 更新升级数据库,包括删除,添加列,修改列的数据类型,修改表的名字
    	* @author admin
    	* @date 2015-10-22 上午11:07:57
    	* @param updateType 要更新的类型 , 直接查看这个类的public静态变量
    	* @param tableName 要添加表的名字
    	* @param columnName 要添加列的名字
    	* @param dataType 所属字段的数据类型"String" , "Integer" , "Boolean"
     */
    public void addColumn(String tableName ,String columnName , String dataType){
    	String tempDataType = null;
    	String defaultValue = null;
    	if(!StringUtil.isEmpty(tableName, columnName) && dataType != null){
    		if(dataType.equals("String")){
    			tempDataType = "String";
    			defaultValue = null;
    		}else if(dataType.equals("Integer")){
    			tempDataType = "Integer";
    			defaultValue = "0";
    		}else if(dataType.equals("Boolean")){
    			tempDataType = "Boolean";
    			defaultValue = "0";
    		}
    	}
    	if(!StringUtil.isEmpty(tempDataType)){
    		getWritableDatabase().execSQL("alter table " + tableName + " add " + columnName + " " + tempDataType + " default " + defaultValue);			
    	}
    }
    	
    /**
    	* 删除表中的某一列
    	* 
    	* @author admin
    	* @date 2015-10-22 下午4:00:41
    	* @param tableName
    	* @param columnName
    */
    public void deleteColumn(String tableName , String columnName){
    	if(!StringUtil.isEmpty(tableName, columnName)){
    		getWritableDatabase().execSQL("alter table " + tableName + " drop column " + columnName);
    	}		
    }
    /**
    	* 修改表中某一列的数据类型
    	* 
    	* @author admin
    	* @date 2015-10-22 下午4:00:58
    	* @param tableName
    	* @param columnName
    	* @param tempDataType
    */
    public void changeColumnType(String tableName , String columnName , String tempDataType){
    	if(!StringUtil.isEmpty(tableName) && !StringUtil.isEmpty(columnName, tempDataType)){
    		getWritableDatabase().execSQL("alter table " + tableName + " modify " + columnName + " " + tempDataType);
    	}		
    }
    	
    /**
    	* 修改某个表的名字
    	* 
    	* @author admin
    	* @date 2015-10-22 下午4:01:15
    	* @param oldTableName
    	* @param newTableName
    */
    public void changeTableName(String oldTableName , String newTableName){
    	if(!StringUtil.isEmpty(oldTableName, newTableName)){
    		getWritableDatabase().execSQL("alter table " + oldTableName + " rename to " + newTableName);
    	}
    }
    

    这一部分的代码放在DatabaseHelper里面,这个类继承自Ormlite的OrmLiteSqliteOpenHelper类。下面展示如何调用:

    try {
    	DataTestDaoImpl daoImpl = new DataTestDaoImpl(this);
    	daoImpl.addColumn("data_test", "qin", "String");
    	DataTest test = new DataTest();
    	test.setId("126");
    	test.setDate("" + new Date());
    	test.setTime("" + new Date());
    	test.setName("chuck chan");
    	test.setQin("yan");
    	
    	Transaction trans = daoImpl.getTransaction();
    	trans.begainTransaction();
    	daoImpl.saveOrUpdate(test);
    	trans.commit();
    	trans.endTransaction();
    } catch (Exception e) {
    	e.printStackTrace();
    }
    

    其中DataTestDaoImpl主要用来操作DataTest这张表,所有这张表的操作都会在这里类里面实现,具体代码如下:

    public class DataTestDaoImpl extends DaoImpl<DataTest, String>{
    	private Context mContext;
    	public DataTestDaoImpl(Context context){
    		super(DataTest.class , MyDatabaseHelper.getInstance(context));
    		mContext = context;
    	}
    	
    	public void addColumn(String tableName ,String columnName , String dataType){
    		MyDatabaseHelper.getInstance(mContext).addColumn(tableName, columnName, dataType);
    	}
    }
    

    表的相关操作与添加column类似。另外需要在添加了相关字段之后才能添加或者更新相关数据,不然的话报错出异常。对于大数据量或者多个表的操作要开启事务处理,提高操作效率。

    展开全文
  • websocket实现数据库更新时前端页面实时刷新 ...
     
    javaweb
     
     
     

    如题,实现以上功能,我知道主要有两大种思路:

    1. 轮询:轮询的原理是隔一段时间向服务器发送一个请求,这里不累述。这里主要谈一下第二种思路。
    2. websocket进行前后端通讯:websocket是html5的新协议,基于TCP,在一次握手后,建立http连接,实现客户端与服务端全双工通信。相比较轮询机制,节约资源,不需要频繁的请求。

    下面通过最精简的javaweb+mysql实例说明,只贴出关键代码。(原码放在github中,里面有本例需要的websocket-api.jar,.sql文件以及README.doc,方便理解本例)。


    user.jsp:




     
    <%@ page import="model.UserBean" %>
    <%@ page import="java.util.List" %>
    <%@ page import="fun.Client" %>
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>$Title$</title>
    </head>
    <body>
    <table  id="table" border="1">
    <tr>
    <th >id</th>
    <th >name</th>
    </tr>
    <%
    
            //的到数据库信息,放在list中
    
            Client client=new Client();
    
            List<UserBean> list= client.list();
    if(list != null){
    for(UserBean user : list){
    
          %>
    <tr >
    <td ><%=user.getId()%></td>
    <td ><%=user.getName()%></td>
    </tr>
    <%
    
              }
    
            }
    
          %>
    </table>
    <div id="message"></div>
    
    <script>
    var websocket = null;
    //判断当前浏览器是否支持WebSocket
    if ('WebSocket' in window) {
    //建立连接,这里的/websocket ,是ManagerServlet中开头注解中的那个值
    
              websocket = new WebSocket("ws://localhost:8080/websocket");
    
          }
    else {
    
              alert('当前浏览器 Not support websocket')
    
          }
    //连接发生错误的回调方法
    
          websocket.onerror = function () {
    
              setMessageInnerHTML("WebSocket连接发生错误");
    
          };
    //连接成功建立的回调方法
    
          websocket.onopen = function () {
    
              setMessageInnerHTML("WebSocket连接成功");
    
          }
    //接收到消息的回调方法
    
          websocket.onmessage = function (event) {
    
              setMessageInnerHTML(event.data);
    if(event.data=="1"){
    
                  location.reload();
    
              }
    
          }
    //连接关闭的回调方法
    
          websocket.onclose = function () {
    
              setMessageInnerHTML("WebSocket连接关闭");
    
          }
    //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
    
          window.onbeforeunload = function () {
    
              closeWebSocket();
    
          }
    //将消息显示在网页上
    function setMessageInnerHTML(innerHTML) {
    
              document.getElementById('message').innerHTML += innerHTML + '<br/>';
    
          }
    //关闭WebSocket连接
    function closeWebSocket() {
    
              websocket.close();
    
          }
    </script>
    </body>
    </html>
    

    前面插入的java代码得到数据库中的信息,后面的js代码实现websocket通讯。


    ManagerServlet.java:

    package fun;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.websocket.*;
    import javax.websocket.server.ServerEndpoint;
    import java.io.IOException;
    import java.sql.PreparedStatement;
    import java.util.concurrent.CopyOnWriteArraySet;
    
    /**
    
     * 这个类即实现了进行数据库操作的Servlet类,又实现了Websocket的功能.
    
     */
    
    //该注解用来指定一个URI,客户端可以通过这个URI来连接到WebSocket,类似Servlet的注解mapping;
    // servlet的注册放在了web.xml中。
    @ServerEndpoint(value = "/websocket")
    public class ManagerServlet extends HttpServlet {
    //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
    private static CopyOnWriteArraySet<ManagerServlet> webSocketSet = new CopyOnWriteArraySet<ManagerServlet>();
    //这个session不是Httpsession,相当于用户的唯一标识,用它进行与指定用户通讯
    private  javax.websocket.Session session=null;
    
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
    
            String msg;
    
            String name=request.getParameter("name");
    //这里submit是数据库操作的方法,如果插入数据成功,则发送更新信号
    if(submit(name)){
    //发送更新信号
    
                sendMessage();
    
                msg="ok!";
    
            }else {
    
                msg="error!";
    
            }
    
            response.sendRedirect("manager.jsp?msg="+msg);
    
        }
    public void doPost(HttpServletRequest request,HttpServletResponse reponse) throws ServletException, IOException {
    
            doGet(request,reponse);
    
        }
    /**
    
         * 向数据库插入一个name
    
         * @param name
    
         * @return
    
         */
    public boolean submit(String name){
    
            DB db=new DB();
    
            String sql="insert into users(name) values(?)";
    try{
    
                PreparedStatement pstmt=db.con.prepareStatement(sql);
    
                pstmt.setString(1,name);
    
                pstmt.executeUpdate();
    return true;
    
            }catch (Exception e){
    
                e.printStackTrace();
    return false;
    
            }finally {
    
                db.close();
    
            }
    
        }
    
    /**
    
         * @OnOpen allows us to intercept the creation of a new session.
    
         * The session class allows us to send data to the user.
    
         * In the method onOpen, we'll let the user know that the handshake was
    
         * successful.
    
         * 建立websocket连接时调用
    
         */
    @OnOpen
    public void onOpen(Session session){
    
            System.out.println("Session " + session.getId() + " has opened a connection");
    try {
    this.session=session;
    
                webSocketSet.add(this);     //加入set中
    
                session.getBasicRemote().sendText("Connection Established");
    
            } catch (IOException ex) {
    
                ex.printStackTrace();
    
            }
    
        }
    
    /**
    
         * When a user sends a message to the server, this method will intercept the message
    
         * and allow us to react to it. For now the message is read as a String.
    
         * 接收到客户端消息时使用,这个例子里没用
    
         */
    @OnMessage
    public void onMessage(String message, Session session){
    
            System.out.println("Message from " + session.getId() + ": " + message);
    
        }
    
    /**
    
         * The user closes the connection.
    
         *
    
         * Note: you can't send messages to the client from this method
    
         * 关闭连接时调用
    
         */
    @OnClose
    public void onClose(Session session){
    
            webSocketSet.remove(this);  //从set中删除
    
            System.out.println("Session " +session.getId()+" has closed!");
    
        }
    
    /**
    
         * 注意: OnError() 只能出现一次.   其中的参数都是可选的。
    
         * @param session
    
         * @param t
    
         */
    @OnError
    public void onError(Session session, Throwable t) {
    
            t.printStackTrace();
    
        }
    
    /**
    
         * 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。
    
         * @throws IOException
    
         * 发送自定义信号,“1”表示告诉前台,数据库发生改变了,需要刷新
    
         */
    public void sendMessage() throws IOException{
    //群发消息
    for(ManagerServlet item: webSocketSet){
    try {
    
                    item.session.getBasicRemote().sendText("1");
    
                } catch (IOException e) {
    
                    e.printStackTrace();
    continue;
    
                }
    
            }
    
    
    
        }
    
    }
    

    这个类首先继承了HttpServlet,目的是接收表单数据完成数据库的修改。其次,这个类实现了websocket的功能。在doGet()方法中,可以看到,一旦数据库发生改变,就会向前台发送“1”,前台收到“1”后即可刷新页面。

     
    展开全文
  • 数据库更新不覆盖前面的数据库,该怎么做?设计两个同名数据库?我用的.net和SQL server。
  • VS2015 + EF +mysql从数据库更新模型报错:无法将运行时连接字符串转换为设计时等效项,没有为提供程序“mysql.data.mysqlclient”安装为设计目的启用visual studio以便与数据库进行通信所需要的库![图片说明]...
  • 需要在插入,更新,修改的最后插入connection.commit()提交 比如: package Model; import java.sql.*; public class SQLUtils { public static Connection connection; public static SQLUtils instance = ...
  •  asp.net Core Entity Framework 7 数据库更新维护 Add-Migration MyFirstMigration  上面这个高亮命令就可以自动生成数据库更新配置文件, 但是,这条命令有个前置条件就是,需要在asp.net core 框架的Startup...
  • python MySQLdb API的数据库更新操作

    千次阅读 2015-05-14 16:04:12
    这两天在使用python执行sql语句时(更新操作),发现对数据库没有影响,但是每次程序返回的值都是正确的,查了资料才发现python的MySQLdb的API把数据库更新语句作为事务来执行,这样的话,虽然使用execute语句执行了...
  • Android数据库更新并保留原来数据的实现  2013-11-06 09:48:58| 分类: Android|举报|字号 订阅    下载LOFTER我的照片书 | Andoird的SQLiteOpenHelper类中有一个onUpgrade
  • 小程序云数据库更新数组第n项

    万次阅读 2019-12-24 15:58:11
    小程序云开发中使用云数据库时,如何更新数组的某一项
  • ![图片说明](https://img-ask.csdn.net/upload/201603/09/1457491220_970032.png) 我写了这段代码。为什么数据库那边数据没更新呢。
  • 我在数据库中创建了一张表 表名AreaInfo 字段Address和CreateTime CREATE TABLE [dbo].[AreaInfo] ( [Address] VARCHAR (50) NULL, [CreateTime] DATETIME DEFAULT ...在edmx中鼠标右键选择从数据库更新模型
  • EF从数据库更新Module

    千次阅读 2017-11-07 14:01:32
    一般是先设计数据库,然后从数据库生成Module,但是数据库表增加或者删除字段后要重新更改生成的Module对象,要如何操作那? 如果是增加了字段,可以进行如下的操作。 1.选中设计器 2.之后点击确定就ok了。 ...
  • 谈谈数据库更新(Update语句)查询

    千次阅读 2007-12-05 00:42:00
    谈谈数据库更新(Update语句)查询今天有人在群上问了关于数据库更新的问题,在此,我将数据库更新的问题给总结一下说白了,数据库更新就一种方法Update,其标准格式:Update 表名 set 字段=值 where 条件不过根据数据...
  • 我EF映射里面缺了一张视图,我的数据库是有这张表的,所以我就更新ExamEvalModel.edmx,但是更新完成之后还是没有,请问为什么?
  • 开发中,数据库字段的定义发生变更,便会使用“从数据库更新实体数据模型”的功能,但是每次操作后,发现实体数据模型并没有同步更新。解决这个问题可以有下面两种思路。 第一种方法是,选中需要更新的实体数据模型...
  • 一,本章目标 可以使用Connection对象取得Statement实例 可以使用Statement进行数据增加,修改,删除操作 ...以上的程序是将sql语句固定好了,如果现在希望...观察Statement进行数据库更新的操作
  • Mysql数据库更新操作导致死锁问题

    千次阅读 2018-07-20 11:44:04
    项目的问题是数据库发生了死锁,在盘查的所有的业务代码后我认为是“单条”批量update语句需要锁表而引发的问题 项目是基于spring的webservice,采用mysql数据库innodb引擎,问题涉及的主要业务如下:  业务1:...
  • 终于进入数据库基础的最后一个环节,那就是更新数据了。这个操作对于初学者来说会稍微麻烦一些,要先从数据库中把我们想要的数据查询出来,然后再对数据进行更新。  我们开始吧~基本的原理跟之前增、查、删是一样...
  • Yii2.0 数据库更新update

    千次阅读 2018-09-07 18:05:00
    Customer::updateAll(['status'=>1],['status'=>'2','uid'=>'1']); 等价于updatecustomersetstatus=1wherestatus=2anduid=1; 不能写成Customer::find()-> updateAll(['status'=>...
  • ORACLE数据库更新大批量数据案例

    千次阅读 2018-08-24 17:15:57
    数据库大批量数据两张表联合更新的一次经历 大约5W行数据,且对ID创建了索引,更新耗费大概12分钟,及其耗时间,于是百度了一下,写了一个游标如下 declare cursor cur is--声明游标cur select B.openid,A.ID...
  • 数据库更新字段id递增

    千次阅读 2018-06-22 16:46:05
    给linkid重新赋值,新的id按序列递增update temp_tbl as cset link_id=(186781+b.new_id)from( select * from ( select row_number() over(order by link_id) as new_id, link_id, generate_series(1, 100) as ...
  • jpa进行update的操作后,更新数据库,但是一级缓存没有更新,所以紧接着查询出来的是缓存中的旧数据,此时只要在对应的 update方法上加入@Modifying(clearAutomatically = true)即可,它更新数据库后会主动清理...
  • 利用Oracle DBLink现实数据库更新功能

    千次阅读 2017-03-09 18:38:34
    1、DBLink作用:将多个不同地点的服务器的Oracle数据库连接起来,逻辑上可看成一个数据库来对待,实现数据库之间的单向操控。 2、要使用DBLink,首先你要有操作DBLink的权限; grant CREATE DATABASE LINK to ywgl...
  • mysql tirgger update 数据库更新触发器

    千次阅读 2018-12-13 15:21:11
    for each row 针对每条更新数据都有效 OLD.alipay_num 表示修改这条记录的原始值,NEW.alipay_num 表示要修改成为的值 命令执行完之后, 可以尝试测试下触发器, 使用update 语句, 此触发器只针对,alipay_num,...
  • 微信小程序数据库更新数据说明

    千次阅读 2020-06-11 19:43:13
    image', message: '更新图片成功', code: 0 } } else {//updated = 0 //这里有两种情况 //1.id在数据库中不存在 //2.index和imgUrl与数据库中的一样,也就是数据没有更改的情况下执行了更新操作 ...
  • 前言 现在有一个需求,需要发布一个shp文件为arcgis server,同时这个服务是会变化的(我的项目中是...数据库为Oracle11g,同时安装Arcgis的电脑已经安装了Oracle客户端 shp文件准备&gt;使用arc Map 打开shp文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,340,620
精华内容 536,248
关键字:

数据库更新