在SQL Server中INSERT记录

时间:2011-03-02 15:21:41

标签: sql sql-server tsql insert

我的数据库中有六个表;他们的架构如下:

1)postad

userid  varchar(20) 
cityid  varchar(20) 
Ucategory_id    varchar(20) 
ad_id   varchar(20) 
title   varchar(MAX)    
ad_description  varchar(MAX)    
img_id  int username    varchar(20) 
 video  varchar(MAX)    
subcategory_id  varchar(50) 
date_creation   datetime    
postid  int 

2)用户详细信息

userpwd varchar(20) 
emailid varchar(30)
mobile  numeric(10, 0)  
squestion   varchar(MAX)    
sanswer varchar(MAX)    
gender  varchar(20)
status_user varchar(20)

3)子类别

subact_id   varchar(50) 
category_id varchar(20) 
subcat_name varchar(50) 

4)imagegallery

img_id  int Unchecked
image_size  bigint  
image_content   image

5)Adtype

adid    varchar(20) 
adtype  varchar(20)

6)类别

cat_id  varchar(20) 
cat_name    char(150)

我想在postad表中插入一条记录。我该怎么做呢?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

使用INSERT statement

通常,制定查询的一种方法是这样的:

INSERT INTO tablename (columnlist) VALUES (valuelist);

您将tablename替换为您要插入的表的名称(在本例中为postad)。此外,您将“columnlist”替换为要插入值的列的名称(以逗号分隔),并将“valuelist”替换为与这些列对应的值(同样由列分隔。)

例如,要为12插入useridcityid的值,您需要执行以下操作:

INSERT INTO postad (userid, cityid) VALUES (1, 2);

答案 1 :(得分:0)

在sqlserver中创建过程为:

CREATE PROCEDURE PSetPostAd
    (
    @userid  varchar(20),
    @cityid  varchar(20), 
    @Ucategory_id    varchar(20), 
    @ad_id   varchar(20), 
    @title   varchar(MAX),    
    @ad_description  varchar(MAX),   
    @img_id  int,
    @username    varchar(20), 
    @video  varchar(MAX),    
    @subcategory_id  varchar(50), 
    @date_creation   datetime,   
    @postid  int 
    )
    AS
    BEGIN
        INSERT into postad(userid, cityid, Ucategory_id, ad_id, title, ad_description, img_id, ...) values
        (@userid, @cityid, ......)
    END
    GO

在你的c#代码中执行以下操作:

SqlConnection cn;
public int saveData(string userid, string cityId, ......)
        {
            cn = new SqlConnection(connectionString);
            SqlCommand cmd = getCommand();
            cmd.Parameters["@userid"].Value = userid;
            cmd.Parameters["@cityId"].Value = cityId;
            cmd.Parameters["@Ucategory_id"].Value = UCategory_id;
            //and so on
            try
            {
                cn.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                cn.Close();
            }
        }

        private SqlCommand getCategoryCommand()
        {
            cmd = new SqlCommand("PSetPostAd", cn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@userid", SqlDbType.VarChar, 20);
            cmd.Parameters.Add("@cityId", SqlDbType.VarChar, 50);
            cmd.Parameters.Add("Ucategory_id", SqlDbType.Varchar, 20);
            //and so on
            return cmd;
        }

答案 2 :(得分:0)

主要有两种使用insert

的样式
Style 1: INSERT INTO PostAd(col1,col2,col3,col4...) VALUES (valforcol1,valforcol2,valforcol3..)

Style 2: INSERT INTO PostAd SELECT col1,col2,col3 FROM <someothertable> 

考虑你的表:

userid  varchar(20) 
cityid  varchar(20) 
Ucategory_id    varchar(20) 
ad_id   varchar(20) 
title   varchar(MAX)    
ad_description  varchar(MAX)    
img_id  int username    varchar(20) 
 video  varchar(MAX)    
subcategory_id  varchar(50) 
date_creation   datetime    
postid  int 

如果选择style1:

INSERT INTO PostAd (userid, cityid, Ucategory_id, ad_id,title,ad_description,img_id, username,video, subcategory_id,date_creation,postid)
VALUES (1,123,443,33,'My Ad','This is a great ad',123,'bradpitt','www.youtube.com/v=23e232',12,GETDATE(),1234)

只需在此确保所有ID,例如userid,cityid,ucategory_id是有效的ID,来自您创建的主表格,如类别或广告类型。

当您要在当前表中插入的数据必须通过选择查询时,通常使用样式2。 select查询的输出将原样插入目标表中。使用样式2时要确保的一件事是,select查询的输出必须包含与您尝试插入的表完全相同的列数