ВСТАВИТЬ запись в SQL Server - PullRequest
0 голосов
/ 02 марта 2011

У меня есть шесть таблиц в моей базе данных;их схема выглядит следующим образом:

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) Тип объявления

adid    varchar(20) 
adtype  varchar(20)

6) категория

cat_id  varchar(20) 
cat_name    char(150)

Я хочу вставить запись в таблицу postad.Как бы я поступил так?Любая помощь будет оценена.

Ответы [ 3 ]

2 голосов
/ 02 марта 2011

Используйте оператор INSERT .

В общем, один из способов сформулировать ваш запрос таков:

INSERT INTO tablename (columnlist) VALUES (valuelist);

Вы бы заменили tablename с именем таблицы, в которую вы хотите вставить (в данном случае postad).Кроме того, вы должны заменить «columnlist» именами столбцов, в которые вы хотите вставить значения (разделенные запятыми), и заменить «valuelist» значениями, соответствующими этим столбцам (также разделенными столбцами)..

Например, чтобы вставить значения 1 и 2 для userid и cityid, вы должны сделать следующее:

INSERT INTO postad (userid, cityid) VALUES (1, 2);
0 голосов
/ 17 июля 2013

Существует в основном два стиля использования вставки

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)

Просто убедитесь, чтоздесь все идентификаторы, например, userid, cityid, ucategory_id, являются действительными идентификаторами и исходят из созданных вами мастер-таблиц, таких как категория или тип объявления.

Стиль 2 обычно используется, когда данные, которые вы хотите вставить в текущийтаблица должна пройти через запрос выбора.Вывод запроса выбора вставляется как есть в целевую таблицу.При использовании стиля 2 необходимо убедиться, что выходные данные запроса на выборку должны содержать точно такое же количество столбцов, что и таблица, в которую вы пытаетесь вставить

0 голосов
/ 08 мая 2013

В 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;
        }
...