У вас здесь кое-что происходит, и я постараюсь вам помочь. Работая с базой данных, вы обычно делаете «выбрать ... из ...», чтобы получить данные, и «вставить в ...», чтобы добавить записи в таблицы.
Далее ваш запрос. Ваша укороченная версия. Проблема здесь в том, что вы пытаетесь присвоить значение @ansat PARAMETER INTO полю Ansatte.ansatID, которое с самого начала является неверным синтаксическим контекстом, но проверяется независимо.
SqlCommand cmd = new SqlCommand(
@"SELECT
Ansatte.ansatID = @ansat,
Ansatte.Navn = @navn,
Ansatte.Efternavn = @efternavn,
Ansatte.Adresse = @adresse...
FROM
Ansatte
INNER JOIN Login_data
ON Ansatte.ansatID = Login_data.ansatID", con);
и добавление параметров ...
cmd.Parameters.Add("@ansat", SqlDbType.Int);
cmd.Parameters.Add("@navn", SqlDbType.VarChar);
cmd.Parameters.Add("@eftervavn", SqlDbType.VarChar);
cmd.Parameters.Add("@adresse", SqlDbType.VarChar);
Хорошо, что вы используете параметры, но вы просто ЗАЯВИЛИ параметры, вы никогда не присваивали им никаких фактических значений, что, по сути, приводит к тому, что следующее передается в движок
SELECT
Ansatte.ansatID = ,
Ansatte.Navn = ,
Ansatte.Efternavn = ,
Ansatte.Adresse =
FROM
Ansatte
INNER JOIN Login_data
ON Ansatte.ansatID = Login_data.ansatID
Следовательно, вероятно, ваша ошибка, так как значение для знака = отсутствует. Теперь, чтобы фактически добавить «Значение» к вашему параметру ... Ваше объявление выглядело нормально, просто завершите его значением, которое может быть фиксированным значением, из записи в окне, настройки конфигурации, что угодно ...
cmd.Parameters.Add("@ansat", SqlDbType.Int).Value = 123;
cmd.Parameters.Add("@navn", SqlDbType.VarChar).Value = "test";
cmd.Parameters.Add("@eftervavn", SqlDbType.VarChar).Value = "more";
cmd.Parameters.Add("@adresse", SqlDbType.VarChar).Value = "done";
, что приведет к защищенному (без SQL-инъекции)
Теперь, что вы действительно можете искать. В вашей базе данных есть таблица, из которой вы хотите получить информацию. В этом случае выберите столбцы, которые вы хотите, а не значения, которые вы хотите установить. Просто запрос. Пример:
SqlCommand cmd = new SqlCommand(
@"SELECT
Ansatte.ansatID,
Ansatte.Navn,
Ansatte.Efternavn,
Ansatte.Adresse,
Ansatte.Postnummer,
Ansatte.Bynavn,
Ansatte.Email,
Ansatte.Mobilnr,
Login_data.Brugertype
FROM
Ansatte
INNER JOIN Login_data
ON Ansatte.ansatID = Login_data.ansatID", con);
Если вы выполните вышеуказанный запрос, он вернет все записи в базе данных, которые имеют совпадающий идентификатор между каждой соответствующей таблицей.
Теперь добавьте параметры в запрос SQL-SELECT. Допустим, вам нужны только все имена в данной области PostNumber. Добавьте условие WHERE для такого поля и параметризованное значение, например
FROM
Ansatte
INNER JOIN Login_data
ON Ansatte.ansatID = Login_data.ansatID
where
Ansatte.Postnummer = @MyPostCriteria", con );
cmd.Parameters.Add("@postnummer", SqlDbType.Int).Value = 11223;
Теперь, если вы пытаетесь добавить запись в базу данных, это будет вставка, и вы можете делать вставку только в одну таблицу за раз, и это может быть что-то вроде ниже. Вы идентифицируете таблицу и столбцы, которые хотите вставить, а затем значения в той же последовательности, что и соответствующая последовательность, как добавлено в списке в скобках вверху. Затем параметризация
SqlCommand cmd = new SqlCommand(
@"INSERT INTO Ansatte
( Navn,
Efternavn,
Adresse
)
values
( @parmForNavn,
@parmForEfternavn,
@parmForAdresse
)", con);
cmd.Parameters.Add("@navn", SqlDbType.VarChar).Value = "test";
cmd.Parameters.Add("@eftervavn", SqlDbType.VarChar).Value = "blah";
cmd.Parameters.Add("@adresse", SqlDbType.VarChar).Value = "123 some street";
Надеюсь, это поможет вам начать то, что вы пытаетесь достичь, либо извлекая данные из базы данных, либо вставляя в.