如何连接其他表格或我第五桌上的用户输入数据?

时间:2018-03-11 14:05:59

标签: c# sql sql-server sql-server-2008

  • 从其他表格或从用户输入到第5表的数据

  • 在其上插入数据的存储程序

我用我的窗体连接了它。

supplier

CREATE TABLE SUPPLIER
(
    SUPPLIERID int identity(001,1) PRIMARY KEY NOT NULL,
    SUPPLIERNAME varchar(50) NOT NULL,
    ADDRESS varchar(50) NOT NULL,   
    Contact# varchar(50) NOT NULL
)

products

CREATE TABLE PRODUCTS
(
    PRODUCTID int identity(301, 1) PRIMARY KEY NOT NULL,
    PNAME varchar(50) NOT NULL,
    PCOLOR varchar(50) 
         FOREIGN KEY REFERENCES PRODUCTCOLOR(PRODUCTCOLOR) NOT NULL,
    PPRICE INT NOT NULL
)

productcolor

CREATE TABLE PRODUCTCOLOR
(   
    PRODUCTCOLOR varchar(50) PRIMARY KEY NOT NULL
)

customer

CREATE TABLE CUSTOMER
(       
    CUSTOMERID int identity(601,1) PRIMARY KEY NOT NULL,    
    FIRSTNAME varchar(50) NOT NULL,     
    LASTNAME varchar(50) NOT NULL,                      
    EMAIL varchar(50) NOT NULL ,        
    ADDRESS varchar(50) NOT NULL,       
    TELEPHONE varchar(50) NOT NULL,
    username varchar(50),
    password varchar (50)
)

我想将它们(连接)放在第5个表中并用它创建一个存储过程

orders

CREATE TABLE ORDERS
(
    Cusid int NOT NULL foreign key references CUSTOMER(CUSTOMERID),
    Proid int NOT NULL foreign key references PRODUCTS(PRODUCTID),
    Supp int NOT NULL foreign key references SUPPLIER(SUPPLIERID),
    FNAME VARCHAR(50),
    LNAME VARCHAR(50),
    PRONAME VARCHAR(50),
    SUPNAME VARCHAR(50),
    PCOLOR  varchar(50)FOREIGN KEY REFERENCES PRODUCTCOLOR(PRODUCTCOLOR)NOT NULL,
    QUANTITY VARCHAR(50)primary key NOT NULL
)

存储过程:

CREATE PROCEDURE sp_order
    @FNAME varchar(50),         
    @LNAME varchar(50),                     
    @PRONAME varchar(50),       
    @SUPNAME varchar(50),       
    @PCOLOR varchar(50),
    @QUANTITY int
AS
    INSERT INTO ORDERS 
    VALUES (@FNAME, @LNAME, @PRONAME, @SUPNAME, @PCOLOR, @QUANTITY)

    RETURN 0

我不知道我的第5张桌子是否正确以及我的存储过程。

我尝试了很多东西,但这有点令人困惑

1 个答案:

答案 0 :(得分:1)

如果未插入表的所有列,则INSERT语句必须列出特定列:

INSERT INTO ORDERS (FNAME, LNAME, PRONAME, SUPNAME, PCOLOR, QUANTITY)
VALUES(@FNAME,@LNAME,@PRONAME , @SUPNAME, @PCOLOR, @QUANTITY);

注意如何指定列名以及提供的值。

但是,您的表已定义NOT NULL列,因此您必须为这些列提供值。

您的程序应该更像这样:

CREATE PROCEDURE sp_order
@Cusid int,
@Proid int,
@Supp int,
@FNAME varchar(50),         
@LNAME varchar(50),                     
@PRONAME varchar(50),       
@SUPNAME varchar(50),       
@PCOLOR varchar(50),
@QUANTITY int
AS

    INSERT INTO ORDERS (Cusid, Proid, Supp, FNAME, LNAME, PRONAME, SUPNAME, PCOLOR, QUANTITY)
    VALUES(@Cusid, @Proid, @Supp, @FNAME,@LNAME,@PRONAME , @SUPNAME, @PCOLOR, @QUANTITY);

RETURN 0;

现在您遇到了获取这些外键值的问题。根据您提供的信息,我无法提供帮助。

作为旁白你不应该用" sp _"来命名程序。因为这是一个特殊的前缀,会对你造成很小的性能损失。