WPF字符串SQL命令的增删改与存储过程的增删改

1.目的与要实现的功能和截图

功能实现SQL命令的增删改;实现SQL的存储过程的增删改;

目的:熟悉WPF与SQL连接的操作;

     掌握SQL命令的增删改的方式;

     掌握存储过程增删改的方式;

     比较两种方式的不同。

效果截图:SQL命令增删改界面---

存储过程增删改界面:

2.步骤和思路

先测试Sql命令的增删改(新建一个类Test.cs------MainWindow.xaml前台设置---------MainWindow.xaml.cs后台设置

再测试存储过程的增删改(新建一个类proc.cs----------新建一个窗口TestProc.xaml,前台编辑--------TestProc.xaml.cs后台编辑)

然后再主界面放置一个按钮,跳转到存储过程增删改的窗口。

3.Sql命令增删改代码

 Test.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;//
using System.Data.SqlClient;
using System.Windows;
using System.Data;//

namespace WpfDataGridAdoTest
{  
  

    public class DBSimple
    {



        private SqlConnection con;

        public DBSimple()
        {
            string str = @"Data Source=PC01;Integrated Security=SSPI;database=SuperMarket";
            con = new SqlConnection(str);

        }

        public void TestExecuteNonQuery_Insert(string id, string name)
        {
            if (con == null) return;
            string sql = "insert 员工信息 values('" + id + "','" + name + "')";
            SqlCommand cmd = new SqlCommand(sql, con);
            if (con.State == ConnectionState.Closed)
                con.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void TestExecuteNonQuery_Delete(string id)
        {
            if (con == null) return;
            string sql = "delete from 员工信息 where 员工ID='" + id + "'";
            SqlCommand cmd = new SqlCommand(sql, con);
            if (con.State == ConnectionState.Closed)
                con.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void TestExecuteNonQuery_Update(string id, string name)
        {
            if (con == null) return;
            string sql = "update 员工信息 set 员工姓名='" + name + "' where 员工ID='" + id + "'";
            SqlCommand cmd = new SqlCommand(sql, con);
            if (con.State == ConnectionState.Closed)
                con.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

    }
}
View Code

MainWindow.xaml:

<Window x:Class="WpfDataGridAdoTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="406" Width="670">
    <Grid>
        <DataGrid AutoGenerateColumns="True" IsSynchronizedWithCurrentItem="True"  IsReadOnly="True"  Height="232" HorizontalAlignment="Left" Margin="38,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="333"  />
        
        <Button Content="增" Height="23" HorizontalAlignment="Left" Margin="54,311,0,0" Name="button1" VerticalAlignment="Top" Width="113" Click="button1_Click" />
        <Button Content="删" Height="23" HorizontalAlignment="Left" Margin="248,311,0,0" Name="button2" VerticalAlignment="Top" Width="113" Click="button2_Click" />
        <Button Content="改" Height="23" HorizontalAlignment="Left" Margin="438,311,0,0" Name="button3" VerticalAlignment="Top" Width="113" Click="button3_Click" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="473,25,0,0" Name="tbID" VerticalAlignment="Top" Width="132"
              Text="{Binding ElementName=dataGrid1, Mode=TwoWay,Path=ItemsSource/员工ID}"   
                 />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="473,107,0,0" Name="tbName" VerticalAlignment="Top" Width="132" 
                 Text="{Binding ElementName=dataGrid1, Mode=OneWay,Path=ItemsSource/员工姓名}"/>
        <Label Content="员工ID" Height="28" HorizontalAlignment="Left" Margin="398,25,0,0" Name="labelID" VerticalAlignment="Top" Width="69" />
        <Label Content="员工姓名" Height="28" HorizontalAlignment="Left" Margin="398,107,0,0" Name="labelName" VerticalAlignment="Top" Width="69" />
        <Button Content="TestProc" Height="23" HorizontalAlignment="Left" Margin="486,208,0,0" Name="button4" VerticalAlignment="Top" Width="75" Click="button4_Click" />
    </Grid>
</Window>
View Code

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;

namespace WpfDataGridAdoTest
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        DBSimple db;
        public MainWindow()
        {
            InitializeComponent();

            db = new DBSimple();

            LoadDataGrid();

        }

        private void LoadDataGrid()
        {
            SqlConnection con;
            string str = @"Data Source=PC01;Integrated Security=SSPI;database=SuperMarket";
            con= new SqlConnection(str);//连接数据库

            if (con.State == ConnectionState.Closed)
                con.Open();//if判断是否关闭


            string sql = "select * from 员工信息;";
            SqlCommand cmd = new SqlCommand(sql, con);//sql命令

            SqlDataAdapter sda = new SqlDataAdapter(cmd);//用sql命令把sql数据取出来

            DataTable dt = new DataTable();//数据表对象

            sda.Fill(dt);//填充数据


            dataGrid1.ItemsSource = dt.DefaultView;//绑定到前台的DataGrid
          
            
               
        
        
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {

            string id = tbID.Text;
            string name = tbName.Text;

            db.TestExecuteNonQuery_Insert(id, name);

            MessageBox.Show("插入数据成功!");//真实的把数据插入进数据库了。。用的是连接字符串的方式。如果是添加数据库文件到工程,没有办法真正把数据插入到数据库。

            LoadDataGrid();
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            string id = tbID.Text;
            string name = tbName.Text;

            db.TestExecuteNonQuery_Update(id, name);

            MessageBox.Show("更新数据成功!");
            LoadDataGrid();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            string id = tbID.Text;
            db.TestExecuteNonQuery_Delete(id);

            MessageBox.Show("删除数据成功!");
            LoadDataGrid();
        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {

            TestProc tp = new TestProc();
            tp.Show();
        }

   




    }
}
View Code

4.存储过程增删改代码

Proc.cs文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace WpfDataGridAdoTest
{
    public interface Proc
    {

    


        void 增加部门信息(string 部门ID, string 部门名称);
        void 删除部门信息(string 部门ID);
        void 更新部门信息(string 部门ID, string 部门名称);
    }


    public class TestDataSet1 : Proc
    {
        private SqlConnection conn;
        public TestDataSet1()
        {

            string str = @"Data Source=PC01;Integrated Security=SSPI;database=SuperMarket;";
            conn = new SqlConnection(str);

        }//构造函数SQL的连接字符串



     

        public void 增加部门信息(string 部门ID, string 部门名称)
        {
            DataSet ds = new DataSet();
            if (conn == null) return;


            SqlCommand cmd = new SqlCommand("增加部门信息", conn);
            cmd.Parameters.Add(new SqlParameter("@部门ID", SqlDbType.Char, 6)).Value = 部门ID; //输入参数
            cmd.Parameters.Add(new SqlParameter("@部门名称", SqlDbType.NChar, 20)).Value = 部门名称; //输入参数
            cmd.CommandType = CommandType.StoredProcedure;

            if (conn.State == ConnectionState.Closed)
                conn.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { }
        }

        public void 删除部门信息(string 部门ID)
        {
            DataSet ds = new DataSet();
            if (conn == null) return;
            SqlCommand cmd = new SqlCommand("删除部门信息", conn);
            cmd.Parameters.Add(new SqlParameter("@部门ID", SqlDbType.Char, 6)).Value = 部门ID; //输入参数
            cmd.CommandType = CommandType.StoredProcedure;

            if (conn.State == ConnectionState.Closed)
                conn.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { }
        }


        public void 更新部门信息(string 部门ID, string 部门名称)
        {
            DataSet ds = new DataSet();
            if (conn == null) return;


            SqlCommand cmd = new SqlCommand("更新部门信息", conn);
            cmd.Parameters.Add(new SqlParameter("@部门ID", SqlDbType.Char, 6)).Value = 部门ID; //输入参数
            cmd.Parameters.Add(new SqlParameter("@部门名称", SqlDbType.NChar, 20)).Value = 部门名称; //输入参数
            cmd.CommandType = CommandType.StoredProcedure;


            if (conn.State == ConnectionState.Closed)
                conn.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex) { }
        }
    }
}
View Code

TestProc.xaml:

<Window x:Class="WpfDataGridAdoTest.TestProc"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="TestProc" Height="402" Width="745">
    <Grid>
        <DataGrid  AutoGenerateColumns="True" IsSynchronizedWithCurrentItem="True" IsReadOnly="True" Height="251" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="431" />
        <TextBox Height="29" HorizontalAlignment="Left" Margin="516,22,0,0" Name="textBoxID" VerticalAlignment="Top" Width="180"
                   Text="{Binding ElementName=dataGrid1, Mode=TwoWay,Path=ItemsSource/部门ID}"/>
        <TextBox Height="29" HorizontalAlignment="Left" Margin="516,88,0,0" Name="textBoxName" VerticalAlignment="Top" Width="180" 
                  Text="{Binding ElementName=dataGrid1, Mode=OneWay,Path=ItemsSource/部门名称}"/>
        <Button Content="增" Height="23" HorizontalAlignment="Left" Margin="76,292,0,0" Name="button1" VerticalAlignment="Top" Width="163" Click="button1_Click_1" />
        <Button Content="改" Height="23" HorizontalAlignment="Left" Margin="516,292,0,0" Name="button2" VerticalAlignment="Top" Width="163" Click="button2_Click_1" />
        <Button Content="删" Height="23" HorizontalAlignment="Left" Margin="294,292,0,0" Name="button3" VerticalAlignment="Top" Width="163" Click="button3_Click_1" />
        <Label Content="部门ID" Height="28" HorizontalAlignment="Left" Margin="449,22,0,0" Name="label1" VerticalAlignment="Top" Width="49" />
        <Label Content="部门名称" Height="28" HorizontalAlignment="Left" Margin="449,89,0,0" Name="label2" VerticalAlignment="Top" Width="61" />
    </Grid>
</Window>
View Code

TestProc.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;

namespace WpfDataGridAdoTest
{
    /// <summary>
    /// TestProc.xaml 的交互逻辑
    /// </summary>
    public partial class TestProc : Window
    {
        Proc pc;
        public TestProc()
        {
            InitializeComponent();
            pc = new TestDataSet1();

            LoadDataGrid();
        }


        private void LoadDataGrid()
        {
            SqlConnection con;
            string str = @"Data Source=PC01;Integrated Security=SSPI;database=SuperMarket";
            con = new SqlConnection(str);//连接数据库

            if (con.State == ConnectionState.Closed)
                con.Open();//if判断是否关闭


            string sql = "select * from 部门信息;";
            SqlCommand cmd = new SqlCommand(sql, con);//sql命令

            SqlDataAdapter sda = new SqlDataAdapter(cmd);//用sql命令把sql数据取出来

            DataTable dt = new DataTable();//数据表对象

            sda.Fill(dt);//填充数据


            dataGrid1.ItemsSource = dt.DefaultView;//绑定到前台的DataGrid


        }


        private void button1_Click_1(object sender, RoutedEventArgs e)
        {
            string id = textBoxID.Text;
            string name = textBoxName.Text;

            pc.增加部门信息(id, name);

            MessageBox.Show("插入数据成功!");

            LoadDataGrid();
        }

        private void button3_Click_1(object sender, RoutedEventArgs e)
        {
            string id = textBoxID.Text;

            pc.删除部门信息(id);

            MessageBox.Show("删除数据成功!");

            LoadDataGrid();
        }

        private void button2_Click_1(object sender, RoutedEventArgs e)
        {
            string id = textBoxID.Text;
            string name = textBoxName.Text;

            pc.更新部门信息(id, name);

            MessageBox.Show("更新数据成功!");

            LoadDataGrid();
        }

     
    }
}
View Code

5.各个部分粗略的作用解释

Test.cs文件:

定义了一个公开的类DBsimple,类里面分两部分。第一配置连接到数据库的字符串,第二是增删改功能实现的代码。

MainWindow.xaml:

很简单,需要注意的是DataGrid的这几个属性AutoGenerateColumns="True" IsSynchronizedWithCurrentItem="True"  IsReadOnly="True"。。其中AutoGenerateColumns是允许自动生成列,只有设置这个值为真,我们后台才能实现数据实时绑定。IsSynchronizedWithCurrentItem是让数据和TextBox双向动态显示。    IsReadOnly让它为只读状态。。。。。

然后就是TEXTBOX的绑定。

MainWindow.xaml.cs:

定义一个私有的无参数方法(查询员工信息),然后打开软件即默认加载这个无参数方法。

然后就是几个按钮的功能实现。

Proc.cs文件:

这个是定义的接口来实现。

在接口实现方法里,首先配置连接数据库的字符串,然后是存储过程的增删改的带参数的公开方法。

TestProc.xaml:

这也没什么好讲的,同MainWindow.xaml。

TestProc.xaml.cs:

几乎是照搬MainWindow.xaml.cs。没什么特别。

5.存储过程代码

use SuperMarket;
go
create proc 增加部门信息
@部门ID char(6),
@部门名称 nvarchar(20)
as
begin
    DECLARE  @errorSum int;
    set @errorSum=0;
    begin transaction 
        insert into 部门信息 values(@部门ID,@部门名称);
    if @errorSum<>0
      rollback transaction;
    else
      commit transaction;
end
go

------插入

use SuperMarket;
go
create proc 删除部门信息
@部门ID char(6)
as
begin
    DECLARE  @errorSum int;
    set @errorSum=0;
    begin transaction 
        delete from 部门信息 where 部门ID=@部门ID;
    if @errorSum<>0
    rollback transaction;
  else
    commit transaction;
end
go
----删除


create proc 更新部门信息
@部门ID char(6),
@部门名称 nvarchar(20)
as
begin
    DECLARE  @errorSum int;
    set @errorSum=0;
    begin transaction 
        update 部门信息  set 部门名称=@部门名称 where 部门ID=@部门ID;
    if @errorSum<>0
    rollback transaction;
  else
    commit transaction;
end
go
----更新
View Code

6.完整的数据库基础代码

use master;
go
create database SuperMarket
go

use SuperMarket;
go
/*==============================================================*/
/* Table: 岗位信息                                                 */
/*==============================================================*/
create table 岗位信息 (
   岗位ID          char(6)   primary key,
   岗位名称        nvarchar(20)   
)
go
/*==============================================================*/
/* Table: 员工信息                                                 */
/*==============================================================*/
create table 员工信息 (
   员工ID          char(6)   primary key,
   员工姓名        nvarchar(20)   
)
go
/*==============================================================*/
/* Table: 员工岗位信息                                                 */
/*==============================================================*/
create table 员工岗位信息 (
   ID        int identity(1,1) primary key,
   员工ID          char(6)   
   constraint fk_员工岗位信息_员工ID
    foreign key references 员工信息(员工ID),
   岗位ID          char(6)   
   constraint fk_员工岗位信息_岗位ID
    foreign key references 岗位信息(岗位ID)
)
go
/*==============================================================*/
/* Table: 供应商信息                                            */
/*==============================================================*/
create table 供应商信息 (
   供应商ID          char(6)   primary key,
   供应商名称        nvarchar(20)          
)
go
/*==============================================================*/
/* Table: 客户信息                                            */
/*==============================================================*/
create table 客户信息 (
   客户ID          char(6)   primary key,
   客户名称        nvarchar(20)     null
)
go
/*==============================================================*/
/* Table: 部门信息                                              */
/*==============================================================*/
create table 部门信息 (
   部门ID          char(6)   primary key,
   部门名称        nvarchar(20)          
)
go
/*==============================================================*/
/* Table: 部门员工信息                                                 */
/*==============================================================*/
create table 部门员工信息 (
   ID        int identity(1,1) primary key,
   员工ID          char(6)   
   constraint fk_部门员工信息_员工ID
    foreign key references 员工信息(员工ID),
   部门ID          char(6)   
   constraint fk_部门员工信息_部门ID
    foreign key references 部门信息(部门ID)
)
go
/*==============================================================*/
/* Table: 商品信息                                            */
/*==============================================================*/
create table 商品信息 (
   商品ID          char(13) primary key,     /*EAN-13条码:13位*/   
   制造商ID        char(6) 
    constraint fk_商品信息_供应商ID
    foreign key references 供应商信息(供应商ID),
   商品名称        nvarchar(20)  ,
   计量单位        nchar(6)        
)
go
/*==============================================================*/
/* Table: 仓库信息                                              */
/*==============================================================*/
create table 仓库信息 (
   仓库ID          char(6)   primary key,
   仓库名称        nvarchar(20)          ,
   仓库地址        text   
)
go
/*==============================================================*/
/* Table: 库存信息                                              */
/*==============================================================*/
create table 库存信息 (
   商品ID          char(13)   primary key,/*商品ID中包含了商品信息、生产厂家、生产时间以及有效期信息,同意名称的商品将有可能采用不同的商品ID*/
   仓库ID          char(6)              
   constraint fk_库存信息_仓库ID
    foreign key references 仓库信息(仓库ID),
   入库均价        decimal(12,2)          null,/* 库存信息中的入库均价,需要对多次入库时商品的价格进行平均,并且需要考虑计量单位和计量因子*/ 
   当前数量        decimal(12,2)          ,/* 库存信息中的当前数量针对的计量单位只能按《商品信息》表中的计量单位执行 (计量因子=1)*/ 
   constraint fk_库存信息_商品ID
       foreign key(商品ID) references 商品信息(商品ID)
)
go


/*==============================================================*/
/* Table: 采购信息                                              */
/*==============================================================*/
create table 采购信息 (
   采购单ID        char(12)  primary key,
   采购日期        datetime          ,
   采购部门ID      char(6)           
   constraint fk_采购信息_采购部门ID
    foreign key references 部门信息(部门ID),
   采购员ID        char(6)           
   constraint fk_采购信息_采购员ID
    foreign key references 员工信息(员工ID),
   供应商ID        char(6) null 
    constraint fk_采购信息_供应商ID
    foreign key references 供应商信息(供应商ID),
)
go
/*==============================================================*/
/* Table: 采购明细                                              */
/*==============================================================*/
create table 采购明细 (
   采购明细ID      UNIQUEIDENTIFIER  default(newid())  primary key,
   采购单ID        char(12)          
    constraint fk_采购明细_采购单ID
    foreign key references 采购信息(采购单ID),
   商品ID          char(13)           
     constraint fk_采购明细_商品ID
       foreign key references 商品信息(商品ID),
   计量单位        nchar(6)          ,  /* 采购时的计量单位可以根据实际情况输入 */   
   计量因子        decimal(12,2)     , /* 计量因子是采购时的计量单位与《商品信息》表中该商品计量单位的比值 */  
   采购数量        decimal(12,2)     , /* 按采购计量单位计算数量 */
   采购单价        decimal(12,2)      /* 按采购计量单位计算数量 */                  
)

/*==============================================================*/
/* Table: 入库信息                                              */
/*==============================================================*/
create table 入库信息 (
   入库单ID        char(12)  primary key,
   入库日期        datetime          ,
   库管员ID        char(6)           
   constraint fk_入库信息_库管员ID
    foreign key references 员工信息(员工ID),
   入库部门ID      char(6)           ,   /*内部入库,如生产部等(产品,半成品)  */ 
   部门代表ID        char(6)           
   constraint fk_入库信息_部门代表ID
    foreign key references 员工信息(员工ID),
   采购单ID        char(12)      null    /*采购入库,如采购部等  */
   constraint fk_入库信息_采购单ID
    foreign key references 采购信息(采购单ID),  
   备注            text          null    /* 说明入库事由  */
)
go
/*==============================================================*/
/* Table: 入库明细                                              */
/*==============================================================*/
create table 入库明细 (
   入库明细ID      UNIQUEIDENTIFIER  default(newid())  primary key,
   入库单ID        char(12)          
   constraint fk_入库明细_入库单ID
    foreign key references 入库信息(入库单ID),
   商品ID          char(13)           
   constraint fk_入库明细_商品ID
    foreign key references 商品信息(商品ID),
   入库数量        decimal(12,2)           ,
   入库单价        decimal(12,2)       null
)
go
/*==============================================================*/
/* Table: 销售信息                                              */
/*==============================================================*/
create table 销售信息 (
   销售单ID        char(12)  primary key,
   销售日期        datetime          ,
   销售部门ID      char(6)           
   constraint fk_销售信息_部门ID
    foreign key references 部门信息(部门ID),
   客户ID          char(6) 
   constraint fk_销售信息_客户ID
    foreign key references 客户信息(客户ID)         
)
go
/*==============================================================*/
/* Table: 销售明细                                              */
/*==============================================================*/
create table 销售明细 (
   销售明细ID      UNIQUEIDENTIFIER  default(newid())  primary key,
   销售单ID        char(12)
    constraint fk_销售明细_销售单ID
    foreign key references 销售信息(销售单ID),
   商品ID          char(13)           
   constraint fk_销售明细_商品ID
    foreign key references 商品信息(商品ID),
   销售数量        decimal(12,2)           , 
   销售单价        decimal(12,2)                   
)
/*==============================================================*/
/* Table: 出库信息                                              */
/*==============================================================*/
create table 出库信息 (
   出库单ID        char(12)  primary key,   
   仓库ID          char(6),
   出库日期        datetime          ,
   出库部门ID      char(6)       null/*内部领用或调拨出库,如生产部等(半成品)  */
   constraint fk_出库信息_部门ID
    foreign key references 部门信息(部门ID),
   销售单ID        char(12)       null/*销售出库,如销售部等  */
   constraint fk_出库信息_销售单ID
    foreign key references 销售信息(销售单ID),
   备注            text          null/* 说明出库事由  */
)
go
/*==============================================================*/
/* Table: 出库明细                                              */
/*==============================================================*/
create table 出库明细 (
   出库明细ID      UNIQUEIDENTIFIER  default(newid())  primary key,
   出库单ID        char(12)          
    constraint fk_出库明细_出库单ID
    foreign key references 出库信息(出库单ID),
   商品ID          char(13)       
   constraint fk_出库明细_商品ID
    foreign key references 商品信息(商品ID),
   出库数量        decimal(12,2)       ,  
   出库单价        decimal(12,2)    null  
)
go
/*==============================================================*/
/* Type: 采购明细临时表                                              */
/*==============================================================*/
create type 采购明细临时表 as Table  
(  
   商品ID          char(13)           ,
   计量单位        nchar(6)          ,  /* 采购时的计量单位可以根据实际情况输入 */   
   计量因子        decimal(12,2)     , /* 计量因子是采购时的计量单位与《商品信息》表中该商品计量单位的比值 */  
   采购数量        decimal(12,2)     , /* 按采购计量单位计算数量 */
   采购单价        decimal(12,2)      /* 按采购计量单位计算数量 */
)  
/*==============================================================*/
/* Type: 入库明细临时表                                              */
/*==============================================================*/
create type 入库明细临时表 as Table  
(  
   商品ID          char(13)                ,
   入库数量        decimal(12,2)           ,/* 入库时的计量单位《商品信息》表中该商品计量单位计算,计量因子=1 入库单价*/
   入库单价        decimal(12,2)       null/* 入库单价按《商品信息》中该商品计量单位对应的入库价格计算 */
)  
Go
/*==============================================================*/
/* Type: 出库明细临时表                                              */
/*==============================================================*/
create type 出库明细临时表 as Table  
(  
   商品ID          char(13)            , 
   出库数量        decimal(12,2)       ,  /* 出库数量的计量单位按《商品信息》表中的计量单位计算 */ 
   出库单价        decimal(12,2)    null  /* 出库单价按《商品信息》表中的计量单位,以及出库时该商品的库存均价计算 */
)  
Go
/*==============================================================*/
/* Type: 销售明细临时表                                              */
/*==============================================================*/
create type 销售明细临时表 as Table  
(  
   商品ID          char(13)            ,  
   销售数量        decimal(12,2)       ,  /* 销售数量的计量单位按《商品信息》表中的计量单位计算 */ 
   销售单价        decimal(12,2)    null  /* 销售单价按《商品信息》表中的计量单位的销售单价计算 */
)  
Go

     



use SuperMarket;
go
insert into 岗位信息 values('W0','经理');
insert into 岗位信息 values('W1','生产员');
insert into 岗位信息 values('W2','销售员');
insert into 岗位信息 values('W3','采购员');
insert into 岗位信息 values('W4','库管员');
go
insert into 员工信息 values('Y00','张经理')
insert into 员工信息 values('Y01','生产员1');
insert into 员工信息 values('Y02','生产员2');
insert into 员工信息 values('Y03','销售员1');
insert into 员工信息 values('Y04','销售员2');
insert into 员工信息 values('Y05','采购员1');
insert into 员工信息 values('Y06','采购员2');
insert into 员工信息 values('Y07','库管员1');
insert into 员工信息 values('Y08','库管员2');
go
insert into 员工岗位信息 values('Y00','W0');
insert into 员工岗位信息 values('Y01','W1');
insert into 员工岗位信息 values('Y02','W1');
insert into 员工岗位信息 values('Y03','W2');
insert into 员工岗位信息 values('Y04','W2');
insert into 员工岗位信息 values('Y05','W3');
insert into 员工岗位信息 values('Y06','W3');
insert into 员工岗位信息 values('Y07','W4');
insert into 员工岗位信息 values('Y08','W4');
go
insert into 客户信息 values('K01','匿名');
insert into 客户信息 values('K02','张三');
insert into 客户信息 values('K03','李四');
go
insert into 供应商信息 values('G01','伊利');
insert into 供应商信息 values('G02','蒙牛');
go
insert into 部门信息 values('D00','办公室');
insert into 部门信息 values('D01','生产部');
insert into 部门信息 values('D02','销售部');
insert into 部门信息 values('D03','采购部');
insert into 部门信息 values('D04','仓储部');
go
insert into 仓库信息 values('CK01','成品仓库1','地址1');
insert into 仓库信息 values('CK02','成品仓库2','地址2')
go
insert into 部门员工信息 values('Y00','D00');
insert into 部门员工信息 values('Y01','D01');
insert into 部门员工信息 values('Y02','D01');
insert into 部门员工信息 values('Y03','D02');
insert into 部门员工信息 values('Y04','D02');
insert into 部门员工信息 values('Y05','D03');
insert into 部门员工信息 values('Y06','D03');
insert into 部门员工信息 values('Y07','D04');
insert into 部门员工信息 values('Y08','D04');
go
INSERT INTO 商品信息 VALUES('m0001','G01','250ML伊利牛奶','');
INSERT INTO 商品信息 VALUES('m0002','G01','1000ML伊利牛奶','');
INSERT INTO 商品信息 VALUES('m0003','G02','250ML蒙牛牛奶','');
INSERT INTO 商品信息 VALUES('m0004','G02','1000ML蒙牛牛奶','');
go
View Code
原文地址:https://www.cnblogs.com/Energy240/p/3624369.html