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); } } } }
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>
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(); } } }
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) { } } } }
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>
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(); } } }
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 ----更新
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