Emrah Duatepe Ответов: 3

Должен ли C# быть установлен на моем компьютере для доступа к базе данных SQL?


Здравствуйте друзья,
Я пытаюсь писать коды, которые интересуют SQL.Я не буду использовать SQL IDE, поэтому мне интересно, смогу ли я получить доступ к базе данных, если не установлен SQL.Я просто буду запускать коды C#, я бы не хотел устанавливать SQL server в машину, потому что, возможно, через 5 лет это может быть проблемой адаптации.

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

private void button1_Click(object sender, EventArgs e)
        {
            if (sqlConnection.State == ConnectionState.Closed)
            {
                label61.Text = DateTime.Now.ToString();
                sqlConnection.Open();
                SqlCommand sqlCommand = new SqlCommand("Insert into ContaVarlık([Parça Varlığı],Tarih) VALUES ('" + "OK" + "','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')", sqlConnection);
                sqlCommand.ExecuteNonQuery();
                sqlCommand.Dispose();
                sqlConnection.Close();
            }
        }
        //********************************************************************************************************************//
        private void button2_Click(object sender, EventArgs e)
        {
            string command = "if exists(select * from sys.tables where name like 'ContaVarlık') drop table ContaVarlık " +
                "create table ABC(" +
                "OgrNo varchar(4))";

            if (sqlConnection.State == ConnectionState.Closed)
            {
                SqlCommand sqlCommand = new SqlCommand(command, sqlConnection);
                sqlConnection.Open();
                sqlCommand.ExecuteNonQuery();
                sqlConnection.Close();
            }
        }

Richard MacCutchan

Где находится ваша база данных и какого она типа? У вас должен быть интерфейс к системе баз данных, SQL Compact, SQL Server, Oracle и т. д.

GKP1992

Я предполагаю, что это SQL server, так как они не хотят его устанавливать.

3 Ответов

Рейтинг:
2

GKP1992

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

Узнайте о параметризованных SQL-запросах и используйте их, чтобы сделать ваш код устойчивым к атакам SQL-инъекций.


Emrah Duatepe

Хорошо,спасибо вам информация

Рейтинг:
2

jsc42

Вы выражаете озабоченность по поводу будущей совместимости, но используете специфический код SQL Server (не все базы данных хранят внутренние данные, такие как имена таблиц в таблице под названием sys.tables). У вас должен быть где - то iunstance SQL engine-почему бы не поместить его в облако, где поставщик облака будет гарантировать, что компонент database engine поддерживается на хорошем уровне обновления.


Рейтинг:
0

CHill60

Согласно решению 1, Нет, вы этого не делаете и, для клиентских машин, не должны делать.

Вы можете подключиться к (удаленным) базам данных с помощью .Объем базы поставщиков данных [^] которые входят в состав .net Framework. Ссылка (на Microsoft Docs) дает дополнительную информацию и ссылки на статьи "Как это сделать".

Также в соответствии с решением 1 - Используйте параметризованные запросы - эта статья объясняет, почему .. SQL-инъекция - OWASP[^] .. и это объясняет, как ... Шпаргалка по параметризации запросов - OWASP[^]

[РЕДАКТИРОВАТЬ]
Я еще раз взглянул на код, который вы разместили ... вместо использования sys.tables использовать
Представления Схемы Системной Информации[^] - они предназначены для кросс-платформенной и кросс-версии, так что вы будете помогать "будущему доказательству" (защите) вашего кода.

if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'ContaVarlık' AND TABLE_SCHEMA = 'dbo')
    drop table dbo.ContaVarlık;
Кроме того, Первый БИТ кода, содержащий конкатенацию, не нуждается в конкатенации - это может быть просто
Insert into ContaVarlık([Parça Varlığı],Tarih) VALUES ('OK',GetDate())