精华内容
下载资源
问答
  • 数据库分离附加:右击——>任务——>分离【分离后数据库是与服务器分离,SQL界面的数据库就会消失,此时就可以剪切文件到U盘】 下次要用:又剪切到原文件夹,然后右击数据库——>附加——>选主数据...

    数据库基础

    1. 系统数据库:master、model、tempdb、madb
    2. 数据库文件的组成:【数据文件可以放在不同的文件组里】
    • 主数据文件:*.mdf 主数据文件只能有一个
    • 次要数据文件:*.ndf
    • 日志文件:*.ldf 日志文件不属于任何文件组

    数据库的拷贝

    1. 数据库分离和附加:右击——>任务——>分离【分离后数据库是与服务器分离,SQL界面的数据库就会消失,此时就可以剪切文件到U盘】 下次要用:又剪切到原文件夹,然后右击数据库——>附加——>选主数据文件所在文件夹。单机确定就会显示出来。

    2. 数据库的脱机与联机

      右击此数据库——>任务——>脱机。脱机后数据库还显示在SQL界面。

      【脱机后可完成数据库文件的剪切和复制】

      下次要用:重新剪切到原文件夹——>右击该脱机数据库——>任务——>联机。即可

      【不建议收缩数据库】

    代码建库

    create database XK--数据库名称
    on primary--主文件组
    (
    name=XK_data,--主数据文件
    filename='D:\project\XK_data.mdf',--主数据文件路径
    size=10mb,--文件初始大小
    maxsize=500mb,--文件增长最大容量限制
    filegrowth=10mb--文件的增量
    ),
    (
    name=XK_data1,--辅数据文件
    filename='D:\project\XK_data1.ndf',--辅数据文件路径
    size=5mb,
    maxsize=100mb,
    filegrowth=1mb
    ),
    filegroup client--新建的文件组
    (
    name=XK_data2,
    filename='C:\project\XK_data2.ndf',
    size=4mb,
    maxsize=10mb,
    filegrowth=1mb
    )
    log on--日志文件
    (
    name=XK_log,
    filename='D:\project\XK_log.ldf',
    size=5mb,
    maxsize=unlimited,
    filegrowth=1mb
    ),
    (
    name=XK_log1,
    filename='D:\project\XK_log1.ldf',
    size=5mb,
    maxsize=unlimited,
    filegrowth=10%
    )
    go
    
    
    
    exec sp_detach_db 'XK'--分离XK数据库
    exec sp_attach_db 'XK' , 'D:\project\XK_data.mdf'--附加XK数据库
    
    exec sp_dboption  'XK' , 'read only' , 'false'--设置数据库只读为关闭
    exec sp_dboption  'XK' , 'single user' , 'false'--设置数据库单用户访问(限制访问)为关闭
    exec sp_dboption  'XK' , 'autoshrink' , 'false'--设置自动收缩为关闭
    exec sp_dboption  'XK' , 'autoclose' , 'false'--设置自动关闭为关闭
    exec sp_dboption  'XK' , 'auto create statistics' , 'true'--自动创建统计信息为开启
    exec sp_dboption  'XK' , 'auto update statistics' , 'true'--自更新统计信息为开启
    
    exec sp_renamedb 'XK' , 'XK1'--数据库重命名
    
    alter database XK1 --修改数据库
    modify name=XK  --修改数据库名称   modify是修改
    
    drop database XK  --删除XK数据库
    
    
    --------------------------------------------------------------------------------
    alter database XK
    add file   
    (
    name=XK_data3,
    filename='C:\project\XK_data3.ndf',
    size=5mb,
    maxsize=unlimited,
    filegrowth=1mb
    ) to filegroup client
    ----添加数据文件到client文件组
    
    ----------------------------------------------------------------------------------
    alter database XK
    add log file
    (
    name=XK_log2,
    filename='c:\project\XK_log2.ldf',
    size=10mb,
    maxsize=20mb,
    filegrowth=1mb
    )
    --添加日志文件
    
    
    -------------------------------------------------------------------------------
    alter database XK
    remove file XK_log2
    --删除文件  后+文件名
    
    ---------------------------------------------------
    alter database XK
    modify file
    (
    name=XK_data1,
    size=6
    )
    ------------修改辅数据文件初始大小
    
    alter database XK
    add filegroup mygroup
    -----------添加文件组
    
    alter database XK
    remove filegroup mygroup
    --------------删除文件组
    
    alter database XK
    modify filegroup client default
    ----------------修改client文件组为默认
    
    alter database XK
    modify filegroup client readonly
    ------------修改client文件组为只读
    
    alter database XK
    modify filegroup client readwrite
    --------------修改client文件组为可写
    
    alter database XK
    modify filegroup [primary] default
    --------------修改主文件组为默认时,要把主文件组文件名用中括号括起来
    

    数据完整性

    1. 一致性+准确性=数据完整性

    2. 完整性包括:域完整性、实体完整性、引用完整性、自定义完整性

    3. 实体完整性 约束方法:唯一约束、主键约束、标识列 保证数据不重复、唯一

    4. 域完整性 约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束

    5. 引用完整性 外键用的值必须是主键里出现过的值 约束方法:外键约束

      ​ 建表先主后从 删除信息先从后主

    6. 自定义完整性 触发器:检查信用值 约束方法:规则、存储过程、触发器

    7. 约束的目的:确保表中数据的完整性

      常用的约束类型:

      主键约束 要求主键列数据唯一,并且不允许为空

      唯一约束 要求该列唯一,允许为空,但只能出现一个空值

      检查约束 某列取值范围限制、格式限制、如有关年龄的约束

      默认约束 某列的默认值,如班级男生较多,默认性别为男

      外键约束 用于两表间建立关系时指定引用主表的那一刻

      非空约束

    8. 选择主键的原则:

      量少性:尽量选择单个键作为主键

      稳定性:尽量选择数值更新少的作为主键

    9. 删除信息时需要注意的地方:

      • 当主表中没有对应的纪录时,不能将记录添加到子表——成绩表中不能出现在学员信息表中不存在的学号
      • 不能更改主表中的值导致子表中的记录孤立——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变。
      • 子表存在与主表对应的记录,不能从主表中删除该行——不能把有成绩的学员删除了。
      • 删除主表前,先删子表——先删除学员成绩表,后删除学员信息表。

    在这里插入图片描述

    代码建表

    1. 代码建表,修改属性

      use XK		--打开数据库
      
      create table Employees			--创建数据表
      (
      编号 char(6) not null constraint pk_编号 primary key,			--not null 不为空     primary key 主键
      姓名 char(8) not null ,
      性别 bit not null constraint df_性别 default 1 constraint ck_性别 check(性别=0 or 性别=1),	--default 1 默认约束为1  check检查约束
      部门 varchar(16) null,
      电话 varchar(20) null,
      地址 varchar(50) null
      )
      go
      
      --也可以把约束写在最后面,比如上面三个约束还可以这样写:
      use XK
      create table Employees--创建数据表
      (
      编号 char(6) not null ,	--not null 不为空     primary key 主键
      姓名 char(8) not null ,
      性别 bit not null  ,	    --default 1 默认约束为1  check检查约束
      部门 varchar(16) null,
      电话 varchar(20) null,
      地址 varchar(50) null,
      constraint pk_编号 primary key(编号),
      constraint ck_性别 check(性别=0 or 性别=1)
      )--如果是两个键联合做主键只能用这种表名约束      默认约束不能通过这个方式建立
      go
      
      alter table Empolyees--修改表的默认约束
      add constraint df_性别 default 1 for 性别
      go
      
      
      
      create table Goods
      (
      商品编号 int not null identity(1,1),		--identity(1,1)标识列(1,1)
      进货员工编号 char(6) not null,
      constraint pk_商品号 primary key(商品编号),
      constraint fk_进货员工编号 foreign key(进货员工编号) references Empolyees(编号)
      --				              外键				   引用     其他表(列名) 
      )
      go
      
      
      drop table Employees--删除数据表
      drop table Goods
      
      --修改数据表代码
      alter table  Employees
      drop column 进货时间--删除列
      
      alter table   Employees
      add 部门 int not null--添加列
      
      alter table  Employees
      alter column 部门 varchar(16)--修改列的数据属性
      
      alter table  Employees
      add constraint df_进货时间 default getdate() for 进货时间--添加约束
      --					getdate() 是一个系统函数,系统时间
      
      alter table  Employees
      drop constraint df_进货时间--删除约束
      
      exec sp_help Employees--查看数据表结构
      
      exec sp_rename  Employees, Employees				--重命名数据表
      
      select * from  Employees--数据表数据信息查询
      
      
    2. 两列联合做主键:复合键

      --当一个字段无法确定唯一性的时候,抄需要其他字段来一起形成唯一性。就是说用来组成唯百一性的字段如果有多个就是联合主键
      --如
      --学生成绩(学号,课程号度,成绩)
      --那学号和课程号就可以做为联合主键.
      --因为学号和课程号决定了成绩.也就是说.你要知知道成绩..你就要知道学号道,知道学号,但还不能知-道某一科的成绩.还要知道课程号.
      --所以函数依赖关系是{学号,课程号}->{成绩}
      alter table tb
      add constraint PK_ID primary key(学号,课程号)
      go
      

      为所建的表添加信息

      1. 单行信息插入

        --单行记录添加
        insert into 表名(列名,列名,列名,····) values(列值,列值,列值,······)
        --
        insert into Employees(编号,姓名,性别,部门,电话,地址)
        values('1001','赵飞燕',0,'采购部','12343212343','北京市南京路')
        
        --字符和日期型数据都必须加引号,各个数据之间逗号分隔   不省略列名的话,数据要与列名一一对应
        
        insert into Employees values('1002','赵飞燕',default,'销售部','97653212343','运城市南京路')
        --省略列名时,数据录入要严格按列顺序输入   有几列就给几个值
        
        insert into Goods values ('1001','sdlfjasg')
        --当数据表有标识列时,标识列数据不需要输入,系统自动给
        
        delete from Goods where 商品编号=6--删除插入表的数据信息
        delete from Goods--清空Goods数据表的全部数据信息
        --删除已经插入的标识列信息时,例如删除商品编号为6的数据,再次插入信息此时商品编号为7
        --此时只能把表做删除,然后用代码重新建表
        
        

        注意事项:

        1. 每个数据的数据类型、精度和小数位数必须与相应的列匹配
        2. 不能为标识列指定值,因为它的数字是自动增长的
        3. 如果在设计表的时候就指定了某列不允许为空,则必须插入数据
        4. 插入的数据项,要求符合检查约束的要求
        5. 具有缺省值的列,可以使用default(默认/缺省)关键字类代替插入的数值,且不用加单引号
      2. 多行数据的插入

        --
        --多行记录添加
        -- insert into 表名(列名,列名,列名,······)
        --select 列值.列值,列值,···· union
        --select 列值.列值,列值,···· union
        --select 列值.列值,列值,···· union
        --select 列值.列值,列值,···· union
        --select 列值.列值,列值,···· 
        --go
        --列名可以省略,但是要按照数据表中列的顺序添加列值
        
        insert into Employees(编号,姓名,性别,部门,电话,地址)
        select '1001' , '赵飞燕' , 0 , '采购部' , '01032198454' , '北京市南京东路55号' union
        
        
      3. 数据表的复制,数据的修改与删除

        --一一一
        --数据表的复制    ——利用 现有表 中的 所需列 重新建一个表
        
        --select 列名,列名··· into 新表名 from 原表名
        select 姓名 , 电话 into 通讯录 from Employees
        
        --复制数据表中所有列,含有数据
        select * into Employees1 from Employees    --没有条件复制全部数据
        select * from Employees1
        
        --复制数据表中所有列,不包含数据,但包含约束和数据   一个空表  
        select * into Employees2 from Employees where 1=2    --1!=2,所以只复制结构,不复制数据 满足条件则复制数据 
        select * from Employees2
        
        --数据添加
        --insert into 目标表名 select 各列名(*代表所有列名) from 原表名
        insert into Employees2 select * from Employees where 性别=1    --性别为1的插入到employees2中,要求两个表中的结构相同
        
        
        --二二二二二二二二二二
        --数据的修改
        --update 表名 set  列名=表达式 where 条件表达式
        
        select * from Employees
        update Employees set 部门='采购部' where 部门='销售部'				--把”销售部“改为“采购部”
        
        select * from Goods
        update Goods set 零售价=零售价+200 where 零售价<2000			  --零售价小于2000的+200
        update Goods set 零售价=零售价+200, 进货价=进货价+100 where 零售价<2000			  --零售价小于2000的+200进货价+100
        
        --三三三三三三三三
        --数据的删除
        --delete from 表明 where 条件表达式
        --truncate table 表名
        
        delete from employees2						--不带条件全部删除   清空时有记录,在日志文件中记录了清空数据
        delete from employees1 where 性别=0				--符合条件的删除
         
        truncate table employees1		--	与delete from employees1 效果相同      清空没有记录,数据不能恢复
        
        --在插入有标识列的信息时,因失误而需要删除信息重新插入时的方法
        --1、  用delete from employees2	删除,重新插入信息标识号不连续,只能删除数据表重新插入
        --2、  用truncate table employees2 删除,重新插入信息标识号连续
         
        
    展开全文
  • SingleLinkedList单向链表插入,删除,查找,修改详解及代码 单向链表学习目标 1. 链表的介绍 2. 单向链表的存储特点以及原理 3. 基本操作:插入,删除等 4. 单向链表应用场景举例 5. 代码实现 一,单向链表的介绍 ...

    SingleLinkedList单向链表插入,删除,查找,修改详解及代码

    单向链表学习目标

    1. 链表的介绍
    2. 单向链表的存储特点以及原理
    3. 基本操作:插入,删除等
    4. 单向链表应用场景举例
    5. 代码实现

    一,单向链表的介绍
    链表是一个有序列表,单向链表有一个头结点(根据需要设置,也可没有)一般不存储数据,只表示一个单向链表的起始位置,单向链表的节点组成:一个data域和一个next指针域,指向下一个节点。

    二,单向链表的存储特点
    在这里插入图片描述
    1)链表是以节点的方式来存储,是链式存储
    2)每个节点包含data域,next域:指向下一个节点.
    3)如上图:发现链表的各个节点不一定是连续存储
    4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。

    存储示意图:
    在这里插入图片描述
    三,基本操作

    • 插入:核心代码:newNode.next = temp.next,然后temp.next = newNode;
    • 删除:先查找到那个元素,然后进行删除,前后节点的指针重新设置,temp.next = temp.next.next,删除后的元素没有其他引用指向,会被垃圾回收机制进行回收处理。
    • 修改:先找到修改的元素,然后进行修改
    • 查找:遍历

    四,应用场景举例
    需求:写一个王者荣耀英雄榜,将英雄插入到链表中,并且实现增删改查操作。

    五,代码实现

    package com.atxiaopeng.linkedlist;
    
    import java.util.Scanner;
    
    public class SingleLinkedListDemo {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//1,创建英雄榜
    		SingleLinkedlist s = new SingleLinkedlist();
    //		HeroNode h1 = new HeroNode(1, "阿珂", "节奏热浪");
    //		HeroNode h2 = new HeroNode(2, "猴子", "大圣娶亲");
    //		HeroNode h3 = new HeroNode(3, "李白", "凤  求  凰");
    //		HeroNode h4 = new HeroNode(4, "露娜", "紫霞仙子");
    		boolean b = true;
    		while (b) {
    			
    			System.out.println("==========王者英雄榜==========");
    			System.out.println("      1,创建英雄并进榜(无序) ");
    			System.out.println("      2,创建英雄并进榜(有序)");
    			System.out.println("      3,修改英雄属性                       ");
    			System.out.println("      4,英雄榜删除英雄        ");
    			System.out.println("      5,显示当前英雄榜    ");
    			System.out.println("      6,退出程序      ");
    			System.out.println("===========================");
    			System.out.print("输入操作的选项:  ");
    			
    			int key = new Scanner(System.in).nextInt();
    			switch (key) {
    			case 1:
    				s.createHero1();
    				break;
    			
                case 2:
                	s.createHero2();
    				break;
    
                case 3:
    				s.update();
    				break;
                case 4:
    				s.delete();
    				break;
                case 5:
    				s.show();
    				break;
                case 6:
    				b = false;
    				System.out.println("程序成功退出!");
    				break;           
                
                default:
    				break;
    			}
    			
    		}
    		
    	}
    
    }
    
    class SingleLinkedlist{
    	
    	//1,创建头结点,不存放数据,不让随便动
    	private	HeroNode headHeroNode = new HeroNode(0, "", "");
    
    	boolean flag = false;//判断标志,例如:判断为空的标志等
    	//创建英雄并无序插入
    	public void createHero1() {
    		System.out.print("输入你要加入英雄的排名:");
    		int newNu = new Scanner(System.in).nextInt();
    		System.out.print("输入你要加入英雄的名字:");
    		String newName = new Scanner(System.in).next();
    		System.out.print("输入你要加入的英雄的常用皮肤:");
    		String newSkin = new Scanner(System.in).next();
    		add(new HeroNode(newNu,newName,newSkin));
    	}
    	//创建英雄并有序插入
    	public void createHero2() {
    		System.out.print("输入你要加入英雄的排名:");
    		int newNu = new Scanner(System.in).nextInt();
    		System.out.print("输入你要加入英雄的名字:");
    		String newName = new Scanner(System.in).next();
    		System.out.print("输入你要加入的英雄的常用皮肤:");
    		String newSkin = new Scanner(System.in).next();
    		addByordering(new HeroNode(newNu,newName,newSkin));
    	}	
    	//2,无序插入
    	public void add(HeroNode heroNode) {
    		
    		HeroNode temp = headHeroNode;
    		while (true) {
    			if (temp.next == null) {
    				break;
    			}
    			if (temp.next.nu == heroNode.nu) {
    					flag = true;
    					break;
    				}
    			temp = temp.next;
    		}
    		if (flag) {
    			System.out.println("排名 : "+heroNode.nu+" 英雄之前已经加入,不能再次加入!");
    		}else {
    			heroNode.next = temp.next;
    			temp.next = heroNode;
    			System.out.println(heroNode.name+" 成功加入王者英雄榜!(无序)");
    		}
    		flag = false;
    		
    	}
    	//3,有序插入
    	public void addByordering(HeroNode heroNode) {
    		
    		HeroNode temp = headHeroNode;
    		while (true) {
    
    			if (temp.next == null) {
    				break;
    			}
    			if (temp.next.nu > heroNode.nu) {
    				break;
    			}else if (temp.next.nu == heroNode.nu) {
    				flag = true;
    				break;
    			}
    			temp = temp.next;
    		}
    		if (flag) {
    			System.out.println("排名 : "+heroNode.nu+" 英雄之前已经加入,不能再次加入!");
    		}else {
    			heroNode.next = temp.next;
    			temp.next = heroNode;
    			System.out.println(heroNode.name+" 成功加入王者英雄榜!(有序)");
    		}
    		flag = false;
    	}
    		
    	
    	//删除英雄
    	public void delete() {
    		
    		HeroNode temp = headHeroNode;
    		HeroNode random ;
    
    		if (temp.next == null) {
    		 System.out.println("英雄榜为空,无法删除!!!");
    		 return; //直接返回,不再继续往下运行
    		}
    		
    		System.out.print("输入要删除英雄的名字:");
    		Scanner input =  new Scanner(System.in);
    		String s1 = input.next();
    		while (true) {
    			if (temp.next == null) {
    				flag = true;
    				break;
    			}else if (temp.next.name.equals(s1)) {
    				break;
    			}
    			temp = temp.next;
    		}
    		if (flag) {
    			System.out.println("英雄榜中不存在该英雄,无法删除!!!");
    		} else {
    			random = temp.next;
    			temp.next = random.next;
    			System.out.println(random.name+" 英雄删除成功!");
    		}
    		flag = false;
    	}
    	//修改英雄属性
    	public void update() {
    		
    		HeroNode temp = headHeroNode;
    		if (temp.next == null) {
    			System.out.println("英雄榜为空,无法修改!");
    			return;
    		}
    		
    		System.out.print("输入你要修改的英雄的名字:");
    		String name = new Scanner(System.in).next();
    		while (true) {
    			if (temp.next == null) {
    				flag = true;
    				break;
    			}else if (temp.next.name.equals(name)) {
    				break;
    			}
    			temp = temp.next;
    		}
    		if (flag) {
    			System.out.println("英雄榜中不存在该英雄,无法修改!!!");
    		} else {
    			System.out.print("输入你要修改英雄的名字:");
    			String newName = new Scanner(System.in).next();
    			System.out.print("输入你要修改的英雄的常用皮肤:");
    			String newSkin = new Scanner(System.in).next();
    			temp.next.name = newName;
    			temp.next.skin = newSkin;
    			System.out.println("===英雄榜已更新!===");
    			}
    		flag = false;
    		
    	}
    	
    	//显示英雄榜
    	public void show() {
    		
    		HeroNode temp = headHeroNode;
    		
    		if (temp.next == null) {
    			System.out.println("王者英雄榜尚未有英雄加入!");
    			return;
    		}
    		while (true) {
    			if (temp.next == null) {
    				break;
    			}
    			
    			temp = temp.next;
    			System.out.println(temp+" ");
    		}
    		
    	}
    	
    }
    
    
    
    class HeroNode{
    	
    	public int nu ;
    	public String name;
    	public String skin;
    	public HeroNode next;
        
    	public HeroNode(int n,String name ,String skin){
    		this.nu = n;
    		this.name = name;
    		this.skin = skin;
    	}
    
    	@Override
    	public String toString() {
    		return "王者英雄榜 :[排名=" + nu + ", 名字=" + name + ", 皮肤=" + skin + "]";
    	}
        
    }
    

    以上是我写的代码,仅供参考,欢迎指正。

    注意:下一篇我们聊一聊线性存储和链式存储的优缺点比较,以及应用场景。

    展开全文
  • 在做查询和修改时,还有问题,发现上次数据转换时没把证劵代码没输出来,所以在修改时主码没有,无法通过主码查询某行数据,并进行修改,代码写了,里面还存在主码问题 [code="java"] /*连接和建立数据库和...
    在做查询和修改时,还有问题,发现上次数据转换时没把证劵代码没输出来,所以在修改时主码没有,无法通过主码查询某行数据,并进行修改,代码写了,里面还存在主码问题



    /*连接和建立数据库和股票数据表gubiao
    * */
    public class jdbc {
    public static void main(String args[]){
    String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驱动
    String URL="jdbc:sqlserver://localhost:1433;DataBaseName=3070421090";

    final String NAME = "sa"; //数据库登录账号
    final String PASS="";


    try{
    Class.forName(DRIVER); //注册驱动
    //获取连接字符串
    Connection conn = DriverManager.getConnection(URL,NAME,PASS);
    Statement s= conn.createStatement();
    String query="create table gubiao(date datatime,open float,high float,low float,close float,amount integer,money float)";//创建数据库属性
    s.executeUpdate(query);
    s.close();
    conn.close();
    }

    catch (ClassNotFoundException e) {
    System.out.println("format"+e.getMessage());
    }

    catch(SQLException e){
    System.out.println(e.getMessage() + "获取连接字符串错误");

    }

    catch(Exception e){
    System.out.println("SQLException;"+e.getMessage());
    }

    }


    }
    /*插入某条数据
    * */
    public static void main(String args[]){

    String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驱动
    String URL="jdbc:sqlserver://localhost:1433;DataBaseName=3070421090";

    final String NAME = "sa"; //数据库登录账号
    final String PASS="";

    try {

    Class.forName(DRIVER); //注册驱动
    //获取连接字符串
    }

    catch(java.lang.ClassNotFoundException e){

    System.out.println("forname;"+e.getMessage() );

    }
    try{

    Connection conn = DriverManager.getConnection(URL,NAME,PASS);

    Statement s= conn.createStatement();

    String r1="insert into gubiao value()";//在股票数据库表中插入数据

    s.executeUpdate(r1);

    s.close();

    conn.close();
    }catch(SQLException e){

    System.out.println("SQLException;"+e.getMessage());
    }

    }
    /*修改某条数据并把数据表的内容显示到屏幕上
    * */
    public static void main(String args[]){

    String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //驱动
    String URL="jdbc:sqlserver://localhost:1433;DataBaseName=3070421090";
    String[] zeh={"主码"};//输入证劵的代码号
    float[] money ={(float) 133445.9};//输入需要修改的数据
    final String NAME = "sa"; //数据库登录账号
    final String PASS="";

    try {

    Class.forName(DRIVER); //注册驱动
    //获取连接字符串
    }

    catch(java.lang.ClassNotFoundException e){

    System.out.println("forname;"+e.getMessage() );

    }
    try{
    Connection conn = DriverManager.getConnection(URL,NAME,PASS);
    PreparedStatement ps=conn.prepareStatement("UPDATE gubiao set money=? where zeh =?");
    int i=0,zehlen=zeh.length;
    do{
    ps.setDouble(1,money[i]);
    ps.setString(2,zeh[i]);
    ps.executeUpdate();
    i++;
    }while(i<zeh.length);
    ps.close();
    //查询数据库并把数据表的内容输出到屏幕上
    Statement s=conn.createStatement();
    ResultSet rs=s.executeQuery("select * from gubiao");
    while(rs.next()){
    System.out.println(rs.getString("")+"\t"+rs.getString("")+"\t"+rs.getString("")+"\t"+rs.getString("")+"\t"+rs.getString("")+"\t"+rs.getString("")+"\t"+rs.getString("")+"\t"+rs.getString(""));
    //输出该行数据
    }s.close();
    conn.close();
    }catch(SQLException e){

    System.out.println("SQLException;"+e.getMessage());
    }

    }

    展开全文
  • 根据之前的一些想法,如果有A,B 两个数据库, 如果把A 用户通过界面产生的更新或者插入修改,操作的数据同步更新到B 库中,如果允许延时2分钟以内 想法一: 通过创建触发器 把变更的数据和对应的名称统一存储到...

    根据之前的一些想法,如果有A,B 两个数据库, 如果把A 用户通过界面产生的更新或者插入修改,操作的数据同步更新到B 库中,如果允许延时2分钟以内

     

    想法一: 通过创建触发器 把变更的数据和对应的表名称统一存储到某个特定的表,然后通过程序获取转换成sql 更新B数据库中的表,本文主要说明使用该方法

    想法二: 通过CDC 记录变更的内容, 园内搜索:  SQL Server 变更数据捕获(CDC)监控表数据  即可 。

    以下是测试: 

     

    drop  database  T_Mytest
     
     
    create  database  T_Mytest
     
     -- 创建修改表
     use T_Mytest 
      create table Mytest
      (
       id  int null ,
       name  nvarchar (20) null  ,
       OwndStore  int null 
      
      )
    
    -- 创建记录修改了那个数据库,那张表的记录
    create table testdatabaseLog
      (
       ID  int   identity  not null ,
        State int null ,-- 同步状态 0表示初始数据没有同步 ,1 表示已经同步需要插入的文件数据
       
       ChangeTableName nvarchar (25) null , -- 更新了哪个数据库表
       createdatetime datetime  null , 
       ActionType int  null ,  -- 1插入 2更新  3 删除 
       ActionName  nvarchar(20) null ,
       Content  nvarchar (max) null  ,  -- 更新后的内容
       FromStore  int null  ,  --  该数据来自那个门店数据库  标识
       ToStore  int null  , -- 同步到那个门店进行处理
      )
    go 
    

      

    二  创建重要的触发器语句 , 可以应用到所有需要同步的表中,只需要在创建的时候增加触发器即可,

    不需要修改里面的内容,只需要修改触发器名称 和应该到哪张表即可

    CREATE TRIGGER [dbo].[itrg_triggerTest]  ON [dbo].[Mytest]
     after  insert , update ,delete
    AS
    set nocount on 
    --查询该触发器触发的表
    --SELECT @@PROCID, OBJECT_NAME( @@PROCID ) 
     declare  @tableName nvarchar(25)  ;
    
    --宣告变量 
    DECLARE @D BIT = 0 
    DECLARE @I BIT = 0 
    
    declare @content nvarchar(max)  ;
    declare @actiontype int  ;
    declare @actionName nvarchar(15)  ;
    IF EXISTS(SELECT TOP 1 1 FROM DELETED) 
    begin 
    SET @D = 1 
    end 
    
    IF EXISTS(SELECT TOP 1 1 FROM INSERTED) 
    begin
    SET @I = 1 
    end 
    
    
    IF @I = 1 AND @D = 0 
    begin 
     set @actiontype=1  ;
      set @actionName='Insert'
    --select N'插入'+'insert into '
     select  @content= (select   * from inserted for xml path)+''
      
     -- select   * from inserted for xml path(@tableName),root('insert')
    end 
     else  IF @I = 1 AND @D = 1 
    begin 
     set @actiontype=2  ;
      set @actionName='Update' ;
     select  @content= (select   * from inserted for xml path)+'' ;
     
    end 
    else 
    begin 
    
     set @actiontype=3  ;
      set @actionName='Delete'
    --select N'删除'+'insert into '
     select  @content= (select   * from deleted for xml path)+'' ;
    end 
    
    
    if ( @content is not null )
    begin 
    
    SELECT  @tableName =OBJECT_SCHEMA_NAME( parent_id ) + '.' + OBJECT_NAME( parent_id )  FROM sys.triggers WHERE object_id = @@PROCID
    
    insert into  testdatabaseLog   
      (
      ChangeTableName ,
      createdatetime ,  
       ActionType , 
       ActionName  , 
       content,FromStore)
       values  ( @tableName ,GETDATE() , @actiontype, @actionName  ,@content,   1)  ;
    end 
    
    
    GO
    

      

    -- 测试数据
      insert into Mytest values (1,'苹果',1)
      insert into Mytest values (2,'雪梨',1)
      insert into Mytest values (3,'香蕉',1)
    

      

    得到结果 测试

     

    转载于:https://www.cnblogs.com/bkyrslf/p/6754651.html

    展开全文
  • 数据结构——链表(Java代码实现)

    千次阅读 多人点赞 2020-10-04 22:30:46
    前面我们已经学习了数组,数组容量一经定义难以改变,同时删除和插入元素需要移动大量的数据元素,效率较低。为此,引入了线性表中的链式存储结构。链式存储的数据元素不再具有连续的地址,同时可以根据需要随时申请...
  • 创建,先创建一个要操作一样的,然后更改存储引擎为目标引擎。 复制代码代码如下: CREATE TABLE my_tmp_table LIKE my_table;ALTER TABLE my_tmp_table ENGINE=InnoDB; b.插入。为了安全速度,最好加上...
  • 表格级别的操作指令2.1创建2.2数据类型2.3查看表和表结构2.4删除2.5修改表结构3.元组级别的操作指令3.1插入3.2修改3.3删除4.命令行测试记录 0.学习前言 从这一节开始,要开始写代码实战啦,一起加油鸭! 1.数据库...
  • MySQL作为最常用的数据库,经常遇到各种各样的问题。今天要说的就是存储引擎的修改。有三种方式,列表如下。 1.真接修改。在数据多的时候比较慢,而且在修改时会影响读取...创建,先创建一个要操作一样的,然
  • 双向链表   双向链表也叫双链表,是链表的一...  要注意的是,在对双向链表进行操作时,如插入,删除,单链表是有区别的,双向链表需要同时修改两个方向上的指针(prevnext) 插入时指针的变化: 参考代码...
  • 删除索引二、数据插入三、简单数据查询1.查询整张2.查询指定属性 一、索引 1.建立索引 create unique index SCno on SC(Sno ASC,Cno DESC); -- ASC 升序 DESC 降序 ,一般默认为升序`在这里插入代码片` 2.修改...
  • 本例主要说明如何对数据表进行插入、更新删除操作。 测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64 测试数据说明 测试表为Student表,其基本结构建立方法参考上一篇: SQLite学习笔记...
  • 修改和删除一、实验简介本节实验...该代码可以新建两个数据库,分别名为test_01mysql_shiyan,并在mysql_shiyan数据库中建 4 个(department,employee,project,table_1),然后向其中插入数据。具体操作如下,首...
  • MySQL数据库使用存储过程插入修改中文出现乱码问题的解决一、乱码问题产生的背景...要求数据表里面INT、VARCHAR、TEXT类型都具备,并需要为分类ID用户ID创建索引。   下面是这个文章记录表的结构: SET FOREI...
  • 数据库通过插入、更新删除等方式来该表表中的记录,其中insert语句实现插入数据update语句实现更新数据delete语句实现删除数据参考表插入数据不指定字段名插入不指定字段名插入复制代码 代码如下:mysql>...
  • 修改和删除一、实验简介本节实验...该代码可以新建两个数据库,分别名为test_01mysql_shiyan,并在mysql_shiyan数据库中建 4 个(department,employee,project,table_1),然后向其中插入数据。具体操作如下,首...
  • 1. 这几天在做一个Javaweb的图书商城项目,在操作数据库的过程中,遇到一个问题? ... 向数据库中的order数据表插入数据时,一直插入数据失败。没有报SQL语句语法错误,Eclipse...数据表orderJava代码如下:
  • 一般除了配置中都会有create_time ,update_time 2个字段,而这个2个...加入,已经设置好了,修改一下结构即可 alter table mall_product modify create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ...
  • 如题,现在我的存储过程,数据插入的先前条件是,按照每天的时间, 每天早8点到晚8点这个时间段内,数据就往字段"Montime-8:00AM-8:00PM"插入,其余 时间(即晚8点到第二天早上8:00),数据就往另一字段"Montime-8:...
  • sqlite 修改表的列

    2020-09-01 18:38:47
    重建表修改列3.1 重命名3.2 重新创建3.3 插入数据3.4 删除旧的4. 总结 sqlite 修改表的列 软件都是在不断的升级变化的,在软件的世界列唯一不变的就是变化;同样对于数据库来讲,也存在一个数据库升级或者...
  • PHP插入百万数据教程目录介绍新建数据库和表修改数据库配置编写代码查看效果总结 目录 介绍 在实际开发中,尤其是电商,会遇到插入百万数据这个问题,要是用for循环一条一条插入会很浪费数据库资源效率很低,博主在...
  • 【实验名称】MySQL数据表的基本操作 【实验目的】  掌握创建和修改表结构的方法  掌握插入、更新和删除表数据的方法 【实验内容】  练习课本的例题和实验课本中的实验3。  完成课本P98页的上机作业。  选...
  • 1.1 数组字符串 2 1.1.1 一维数组的倒置 2 范例1-1 一维数组的倒置 2 ∷相关函数:fun函数 1.1.2 一维数组应用 3 范例1-2 一维数组应用 3 1.1.3 一维数组的高级应用 5 范例1-3 一维数组的高级应用 5 1.1.4 显示...
  • 数据库通过插入、更新删除等方式来该表表中的记录,其中 insert语句实现插入数据 update语句实现更新数据 delete语句实现删除数据参考 插入数据不指定字段名插入 不指定字段名插入 代码如下:mysql> insert into ...
  • 用一段地址连续的单元依次存储数据元素的线性结构,顺序又分为静态顺序表和动态顺序 功能: 初始化顺序 在表尾插入数据 在表头插入数据 删除表尾数据 删除表头数据 读取任意位置元素 修改任意位置元素 ...
  • 解题思路:利用A、B两递增有序的特点,依次取出当前结点进行比较,将当前值较小者摘下,插入到C的头部,由于采用的是头插法,最先找到的最小值结点将会在C的尾部,依次类推,所以得到的C则为非递增有序的。...
  • C语言数据结构-链表

    2021-03-15 16:50:45
    文章目录C语言数据结构-链表前言创建链表打印链表内容释放链表内存删除结点根据结点值删除根据结点位置删除根据结点位置插入新的结点根据结点位置修改结点的值根据结点的值查找结点位置根据结点的位置查找结点
  • C#向DataTable插入列或行数据

    万次阅读 2016-06-22 09:01:13
    这次用到了C#中的Datatable,...,所以在进行处理的时候原的各个列名还要进行保存,首先我在网上找到了相关的向Datatable中插入一行数据代码,然后进行了修改:  dt.Columns.Add(ss);  dt.Columns.Add("Name")
  • Java数据结构之双向链表什么是双向链表双向链表增删改查添加节点遍历链表修改结点数据删除节点完整代码 什么是双向链表 结构类似于单向链表,但是每个节点多了一个pre用于指向前一个结点,这样的特性使得双向链表...
  • 数据结构之双向链表

    2020-04-14 09:43:16
    数据结构之双向链表双向链表介绍 双向链表介绍 每次在插入或删除某个节点时, 需要处理四个节点的引用, 而不是两个. 也就是实现起来要困难一些 相对于单向链表, 双向链表必然占用内存空间更大一些. 但是这些缺点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,169
精华内容 467
关键字:

数据表插入和修改代码