Member 13483863 Ответов: 3

Хотите показать последний вставленный идентификатор , я новичок в этом деле ASP.NET пожалуйста, поделитесь кодом, если у кого-то есть решение.


хотите показать последний вставленный идентификатор , я новичок в этом деле asp.net пожалуйста, поделитесь кодом, если у кого-то есть решение.

Что я уже пробовал:

public void AddWorkSheet() {

    if (!DropDownList1.SelectedItem.Text.Equals("--Select Project Name--") && !DropDownList2.SelectedItem.Text.Equals("--Select Department Name--"))
    {

        da = new MySqlDataAdapter("Insert into tbl_dailyworksheet (projectname,departmentname) values('" + DropDownList1.SelectedItem.Text + "','" + DropDownList2.SelectedItem.Text + "') select last_insert_id() ", con);

            da.Fill(ds, "id");
            if (ds.Tables["id"].Rows.Count > 0)
            {
                wsid = ds.Tables["id"].Rows[0][0].ToString();
            }

            Response.Write("alert('Event Added')");

    }
    else
    {
        Response.Write("alert('Select Project and department properly')");
    }
}

3 Ответов

Рейтинг:
1
Рейтинг:
0

OriginalGriff

Во-первых, не делай этого так! Никогда не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.

Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:

SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.

Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?

Во-вторых, добавьте точку с запятой между двумя командами.

В-третьих, используйте ExecuteScalar вместо того, чтобы тратить DataAdapter / DataTable на одно значение.

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


Member 13483863

нужен код, чтобы показать ID текущей записи данных для asp.net C# с использованием СУБД MySQL

Рейтинг:
0

Raja Nouman

если у вас есть первичный ключ, то это становится очень просто...

строки Q="выбрать * из таблицы table_name, где имя пользователя='Али' и ID=(выберите Max(ID) из таблицы table_name)";

это вернет вам последнее вы если "ИДЕНТИФИКАТОР" является первичным и Автоинкрементным


Richard Deeming

Он вернет последний идентификатор, вставленный пользователем кто угодно Если базу данных одновременно используют несколько пользователей, вы получите неверные результаты.