Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/55: Рейтинг темы: голосов - 55, средняя оценка - 4.73
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 72

Прочитать последнюю запись в БД

19.03.2015, 12:27. Показов 10476. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть БД (sql). В БД есть поле NM.
Необходимо прочесть последнюю запись, добавить к ней + 1, и вывести в textbox
(к примеру последняя запись 0012, следовательно в textbox выводит 0013)

Подскажите пожалуйста как правильно это реализовать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2015, 12:27
Ответы с готовыми решениями:

SQL Server Compact Framework. Как получить из базы данных последнюю добавленную запись в таблицу
Так не работает. Вообще исключение появляется, что не знает SQL такой функции internal мщшв GetLastEventNumber() { ...

Прочитать последнюю строчку бинарного файла
В бинарном файле (exe) через блокнот дописана своя последняя строчка. Подскажите, как ее прочитать в c#? string lines =...

Поменять любую запись местами с последней и удалить последнюю запись.
Помогите пожалуйста! Мне для программы, которая использует records (записи), нужно написать процедуру, которая меняет любую запись...

15
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
19.03.2015, 12:32
select top 1 t.NM from TabName as t order by t.NM desc
1
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 72
19.03.2015, 12:45  [ТС]
Если можно, пример кода...
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
19.03.2015, 12:49
Лучший ответ Сообщение было отмечено andrey82y как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
private void showMax() 
{ 
 
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand("SELECT MAX(id) from TABLE1", connection);
 
            try
            {
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                //отсюда
                reader.Read();
                textbox1.Text = ((int)reader["id"] + 1).ToString();
                if(reader.Read())
                    throw new Exception("too many rows has been readed!");
                //до сюда можно красивее
                reader.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            
        }
       Console.ReadLine();
}
1
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
19.03.2015, 13:07
Лучший ответ Сообщение было отмечено andrey82y как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
 
namespace cyb32 {
    class Program {
        static void Main(string[] args) {
            using (SqlConnection con = new SqlConnection(@"server=AS-MSK-N0255\NTVR;uid=***;pwd=***;database=NTVR")) {
                con.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = @"select top 1 
                                        t.Номер
                                    from 
                                        DПриходнаяНакладнаяID as t
                                    order by
                                        t.Номер desc
                                    ";
                cmd.Connection = con;
                string strN = (string)cmd.ExecuteScalar();
                int l=strN.Length;
                int n=int.Parse(Regex.Match(strN, @"\d+").Value);
                Console.WriteLine("{0:d"+l+"}",n+1);
 
               
            }
 
        }
    }
}
Добавлено через 3 минуты
ну да можно макс пользовать, привычка у меня просто... надо выбирать порой не только одно поле, а несколько полей из "последней"
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.03.2015, 13:41
ture, с точки зрения производительности лучше юзать Max.

Добавлено через 6 минут
Поправка: посмотрел на пром. базе с большим числом данных, запрос почти одинаковый выходит, orderby даже чуть-чуть быстрее.
0
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
19.03.2015, 13:57
Psilon, сейчас может показаться, что я в этом прям секу.
Это совсем не так. Единственные два правила, которым я следую при работе с базой:
1) попасть в индекс
2) написать код так, чтоб было покороче или поинтереснее мне самому.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.03.2015, 14:15
Цитата Сообщение от andrey82y Посмотреть сообщение
Необходимо прочесть последнюю запись, добавить к ней + 1, и вывести в textbox
Надеюсь, что вы таким образом не автоувеличивающийся ключ реализуете.
0
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 72
19.03.2015, 14:29  [ТС]
ture, Спасибо! Ваш вариант допилил, работает!

pro_100_gram, С вашим, пока разбираюсь....
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.03.2015, 14:41
Лучший ответ Сообщение было отмечено Psilon как решение

Решение

Цитата Сообщение от ture Посмотреть сообщение
Psilon, сейчас может показаться, что я в этом прям секу.
Это совсем не так. Единственные два правила, которым я следую при работе с базой:
1) попасть в индекс
2) написать код так, чтоб было покороче или поинтереснее мне самому.
Дак это же совсем не трудно, нужно только одну кнопочку нажать в managment studio Вот что выходит с запросом:


100% времени на index scan - это победа Ибо время выполнения <1мс на 150гиговой таблице.

Картина с OrderBy такая же, только убирается еще один Top1 то есть в этом запросе их два, а с orderby - один.
0
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 72
19.03.2015, 15:05  [ТС]
pro_100_gram,

Может что-то пропустил?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        private void showMax()
        {
 
            {
                SqlCommand command = new SqlCommand("SELECT MAX(NM) from dvig", cs);
 
                try
                {
                    cs.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    //отсюда
                    reader.Read();
                    textBox1.Text = ((int)reader["NM"] + 1).ToString();
                    if (reader.Read())
                        throw new Exception("too many rows has been readed!");
                    //до сюда можно красивее
                    reader.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
 
            }
            Console.ReadLine();
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
19.03.2015, 15:11
C#
1
2
3
4
5
6
using (SqlConnection connection = new SqlConnection(connStr))
{
    SqlCommand command = new SqlCommand("SELECT MAX(NM) from dvig", connection );
    try
    {
        connection.Open()
0
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 72
19.03.2015, 16:28  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace OPT
{
    public partial class schet : Form
    {
        DataSet ds = new DataSet();
        SqlConnection cs = new SqlConnection("Data Source=192.168.1.3;Initial Catalog=opt;User ID=****;Password=*****");
        SqlDataAdapter da = new SqlDataAdapter();
        BindingSource dvigbs = new BindingSource();
        
 
        
        private void showMax()
        {
            using (SqlConnection cs = new SqlConnection(connectionString))
                   {
    SqlCommand command = new SqlCommand("SELECT MAX(NM) from dvig", cs );
    try
    {
        cs.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    //отсюда
                    reader.Read();
                    textBox1.Text = ((int)reader["NM"] + 1).ToString();
                    if (reader.Read())
                        throw new Exception("too many rows has been readed!");
                    //до сюда можно красивее
                    reader.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
 
            }
            Console.ReadLine();
        }
0
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
19.03.2015, 18:09
andrey82y, у вас экземпляр SqlConnection cs определен как инициализатор поля экземпляра и одновременно экземпляр SqlConnection cs создается при вызове функции showMax() с переданным в качестве параметра конструктору не объявленной ни разу connectionString. Исправьте этот момент и все
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.03.2015, 18:31
как выше сказали:
C#
1
using (SqlConnection cs = new SqlConnection("Data Source=192.168.1.3;Initial Catalog=opt;User ID=****;Password=*****"))
ну и Console.ReadLine это нечто странное
0
2 / 2 / 1
Регистрация: 17.03.2015
Сообщений: 72
20.03.2015, 09:42  [ТС]
Всем спасибо! Все получилось!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2015, 09:42
Помогаю со студенческими работами здесь

Как в файле txt прочитать последнюю строчку? Есть ли встроенные методы Java для этого?
Как в файле txt прочитать последнюю строчку? Есть ли встроенные методы Java для этого?

Переход на последнюю запись
Когда нажимаю на кнопку &quot;Добавить/Изменить&quot;, у меня переходит на форму, где добавляю и изменяю записи соответственно, но начинается с...

Проверка на последнюю запись
Помогите, пожалуйста, написать в VBA программу на проверку последней записи!!!

вывести последнюю запись
В таблице существует такая запись: ФИО1 дата операция (приостановленно) ФИО1 дата операция (возобновленно) ФИО1 дата операция...

Не попадаю на последнюю запись.
Программно запускаю две сохраненные процедуры: 1. Insert .... проходит нормально. 2. SELECT Top 1 * FROM MyTable Order By ID Desc. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru