2013-03-05 4 views
1

Спасибо, что посмотрели мой вопрос. Надеюсь, я смогу получить ответ. У меня есть проект на C#. Я пытаюсь захватить поле IF из таблицы. Как только у меня есть эти данные, я хочу увеличить значение на 1. (Например, я хватаю 10000 и добавляю 1, что делает его 10001.) Затем я хочу ввести добавочное значение в другую таблицу.Выберите из таблицы, затем вставьте это значение (значение + 1) в другую таблицу?

Это то, что я до сих пор (только запрос на выборку):

cmd = new SqlCommand("select reqID from [RequestID] where (ID = 1)", con); 

Я попытался с помощью DataSet без какого-либо прогресса. Я не слишком хорошо разбираюсь в кодировании, но стараюсь!

DataSet ds = new DataSet(); 
myDA1.Fill(ds, "RequestID"); 
Int64 RequestID = default(Int64); 
RequestID = ds.Table("RequestID").Rows(0).Item("ReqID"); 
RequestID += 1; 

Любая помощь будет оценена!

Джош

+0

Я использовал ExecuteScalar, и он отлично работал! Int64 RequestID = default (Int64); ReqID = (Int64) cmd.ExecuteScalar(); ReqID + = 1; –

ответ

4

Просто запустите:

INSERT INTO yourOtherTable (reqId) 
SELECT reqID + 1 
FROM RequestID 
+0

Спасибо за ваш ответ. Я выполнил этот запрос, но я не получаю значение в другой таблице.Это то, что я сделал: cmd = new SqlCommand ("insert into [Transactions] (ReqID)) выбрать ReqID + 1 из [RequestID]", con); –

+0

Я также добавил предложение WHERE там без изменений. –

+0

Ну, вам нужно выполнить его. cmd.ExecuteNonQuery(); – aquinas

0

Вы пытаетесь получить значение из таблицы в SQL?

Если вам, вероятно, не нужно играть с наборами данных, вам просто нужно прочитать значение из SQL.

MSDN article on Ado.Net

После того, как вы получите ваше значение с помощью SqlDataReader вы можете увеличить его и установите его заново.

Simple CRUD operations using Ado.Net

+0

Спасибо за ссылки. –

+0

Наборы данных, как известно, скверны, я думаю, что если вы сосредоточитесь на чтении значения, вы на полпути, так как это всего лишь небольшой случай увеличения его до повторного ввода. –

+0

Я понял. Я использовал ExecuteScalar. Int64 RequestID = default (Int64); ReqID = (Int64) cmd.ExecuteScalar(); RequestID + = 1; –

0

Просто измените в этом

образца

string sql1 = string.Format(@"select reqID from [RequestID] where (ID = 1)"); 
     SqlDataAdapter da1 = new SqlDataAdapter(sql1, con); 
     DataSet ds1 = new DataSet(); 
     con.Open(); 
     da1.Fill(ds1); 
     RequestID = ds.Table[0]["RequestID"]; 
0

Почему не просто увеличить значение в SQL? Это действительно хорошо. С вашим желаемым результатом вы можете сделать что-то подобное.

cmd = new SqlCommand("select reqID + 1 as reqID from [RequestID] where (ID = 1)", con); 
con.Open(); 
List<int> requestIds = new List<int>(); 
using(SqlDataReader reader = cmd.ExecuteReader()){ 
    while(reader.Read()){ 
    requestIds.Add(reader.GetInt32(0)); 
    } 
} 
return requestIds; // I find that Lists are much easier to work with 
// than DataTables, particularly for novices. 

если вы хотите что-то более явным, линия

requestIds.Add(reader.GetInt32(0)); 

может быть изменен на:

requestIds.Add(reader.GetInt32(0) + 1); 

с вами выходя запрос то же самое.

Edit: Модифицированная реакция из-за комментарий:

Спасибо за ответ. Я хочу ввести это значение в другую таблицу, но я добавлю значение «позже», со всеми остальными данными, которые будут введены конечным пользователем.

+0

Спасибо за ответ. Я хочу ввести это значение в другую таблицу, но я добавлю значение «позже», со всеми остальными данными, которые будут введены конечным пользователем. –

Смежные вопросы