phanny 2011 Ответов: 9

Как вставить данные в Ms SQL server 2008 с помощью C#.net


Дорогие все,

Я использую visual studio 2010, у меня есть проблема с вставкой данных в базу данных SQL server.
Вот мой код:
cn.ConnectionString = @"Data Source=PHANNY-PC\PHANNY; Initial Catalog=db_stuRegisterPay; Integrated Security=SSPI";
            cn.Open();
SqlCommand com = new SqlCommand();
            com.Connection = cn;
            com.CommandType = CommandType.Text;
          
            com.CommandText = "insert into Persons_info(perID, latinName, gender, dob, pob, phone, passport, curAdd, status) values('" + txtID.Text + "','" + txtLatinName.Text + "','" + cbGender.Text + "'" + dTPdob.Text + txtPob.Text + "','" + txtPhone.Text + "','" + txtPassport.Text + "'" + txtCurAdd.Text + "'" + cbStatus.Text + " )";
com.ExecuteNonQuery();
MessageBox.Show("Saving is done!");

Ошибка заключается в следующем
Incorrect syntax near 'Tuesday'. In line com.ExecuteNonQuery();


Спасибо всем.

André Kraak

Отредактированный вопрос:
Добавлены предварительные теги

Member 13711852

Та же ошибка

9 Ответов

Рейтинг:
73

s_magus

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

cbGender.Text + "'" + dTPdob.Text + txtPob.Text + "','"


Используя параметризованный запрос, вы можете устранить беспорядочную конкатенацию строк и другие проблемы, связанные с ним и sql-инъекцией. Кроме того, его гораздо легче читать и обновлять в будущем, если вам нужно добавить еще один параметр.

com.CommandText = "insert into Persons_info(perId, latinName, gender, dob, pob, phone, passport, curAdd, status) values (@perId, @latinName, @gender, @dob, @pob, @phone, @passport, @curAdd, @status)"

com.Parameters.Add(new SqlParameter("@perId", txtId.Text));
com.Parameters.Add(new SqlParameter("@latinName", txtLatinName.Text));
com.Parameters.Add(new SqlParameter("@gender", cbGender.Text));
com.Parameters.Add(new SqlParameter("@dob", dTPdob.Text));
com.Parameters.Add(new SqlParameter("@pob", txtPob.Text));
com.Parameters.Add(new SqlParameter("@phone", txtPhone.Text));
com.Parameters.Add(new SqlParameter("@passport", txtPassport.Text));
com.Parameters.Add(new SqlParameter("@curAdd", txtCurAdd.Text));
com.Parameters.Add(new SqlParameter("@status", cbStatus.Text));


phanny 2011

Большое спасибо. Он работает, но есть проблема больше о типе данных dob - это дата, а dTPdob-это dateTimePicker. Так как же я могу его изменить?

uspatel

используйте dTPdob.Value вместо dTPdob.Text

Рейтинг:
2

Dinesh92

попробуйте простой код:

Sqlconnection con=new Sqlconnection();
con.open();
con.Connectionstring="Data Source=PHANNY-PC\PHANNY; Initial Catalog=db_stuRegisterPay; Integrated Security=SSPI";
string query="insert into Persons_info(perID, latinName, gender, dob, pob, phone, passport, curAdd, status) values('" + txtID.Text + "','" + txtLatinName.Text + "','" + cbGender.Text + "'" + dTPdob.Text + txtPob.Text + "','" + txtPhone.Text + "','" + txtPassport.Text + "'" + txtCurAdd.Text + "'" + cbStatus.Text + " )";

SqlCommand cmd=new SqlCommand(query,con);
cmd.ExecuteNonQuery();

MessageBox.show("Saving is done!");


это самое простое кодирование...попробуй вот это....


Рейтинг:
2

FM7

com.CommandText = "insert into Persons_info(perID, latinName, gender, dob, pob, phone, passport, curAdd, status) values('" + txtID.Text + "','" + txtLatinName.Text + "','" + cbGender.Text + "','" + dTPdob.Text + "','" + txtPob.Text + "','" + txtPhone.Text + "','" + txtPassport.Text + "','" + txtCurAdd.Text + "','" + cbStatus.Text + " )";
                com.ExecuteNonQuery();


Рейтинг:
2

MaulikDusara

Привет,

Здесь поле datetime создает проблему, не так ли?

пожалуйста, преобразуйте значение или формат вашего dTPdob.Текст в формате даты гггг-ММ-ДД и проверьте, успешно ли вы вставите свою запись.


samimus

привет ,
у меня есть один вопрос , пожалуйста, я хочу вставить данные в свою базу данных (sqlserver2008), я сделал два textboxs (txtnum,txtnom). поэтому мой вопрос заключается в том, как я могу сделать, если мне нравится проверять значение txtnum befort, вставляя данные, чтобы избежать дублирования в моей базе данных
я ищу код с#
с уважением

[no name]

Привет,
Вам нужно создать Триггер SQL Пожалуйста, смотрите ниже пример триггера, который является Вместо триггера.

Создать триггер dbo.uniqueUserQuestion
На dbo.submit_Answer
ВМЕСТО ТОГО, ЧТОБЫ ВСТАВИТЬ
АС
НАЧАТЬ
УСТАНОВИТЕ NOCOUNT ON
ЕСЛИ СУЩЕСТВУЕТ
(
Выберите 1
От dbo.submit_Answer T
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВСТАВИТЬ Я
Т. имя_пользователя = И. имя_пользователя
И T. question_id = I. question_id
)
НАЧАТЬ
-- Не Боян это
Печать "дубликата"
raiserror("не могу представить ответ на один и тот же вопрос дважды")
вернуть
КОНЕЦ

-- вообще-то добавь его сюда
ВСТАВИТЬ В
ДБО.submit_Answer
ВЫБИРАТЬ
*
ОТ
ВСТАВИЛ Я
КОНЕЦ
ГО

Рейтинг:
1

ashwinikumar shende

проверьте свой код, который вы не используете правильно '"+ dTPdob.Text+"(кавычки) в вашем запросе вставки .вот почему он выдает ошибку


CHill60

Этому вопросу уже более 2 лет, и у него уже было 8 решений. Решение 4 - это лучший подход-использование параметризованных запросов означает, что вам не нужно беспокоиться о кавычках

Рейтинг:
0

Mohd Imran Saifi

Использовать это.

cmd.параметры.Addwithvalue("@ur_parameter",Convert.toDateTime(ваше значение даты));

Я надеюсь, что это устранит ошибку.

или же измените формат datetimepicker:- на пользовательский
и добавьте значение в свойстве пользовательского формата:-dd/MM/yyyy(используйте месяц с большой буквы)


Я надеюсь, что это сработает.
Если у вас есть какая-то ошибка, просто напишите ее.


Рейтинг:
0

Charlemagne Gustilo

Привет, вы можете проверить приведенную ниже инструкцию SQL, учитывая, что все поля являются строковыми.

ком.Свойства commandtext = "вставить в Persons_info(сроки, latinName, пол, дата рождения, ПОБ, телефон, паспорт, curAdd, статус) ценности('" + txtID.Текст + "', '" + txtLatinName.Текст + "', '" + cbGender.Текст + "', '" + dTPdob.Текст + "', '" + txtPob.Текст + "', '" + txtPhone.Текст + "', '" + txtPassport.Текст + "', '" + txtCurAdd.Текст + "', '" + cbStatus.Текст + "')";


phanny 2011

нет, не все, как перид-это инт, доб-это date....so как я это делаю?

Рейтинг:
0

FM7

количество вставленных значений должно быть равно количеству полей,которые вы будете вставлять в них, см. Еще раз код:
поле 9
но ценности-это 5 !!
значения должны разделяться на "," и другие.
"вставить в Persons_info(сроки, latinName, пол, дата рождения, ПОБ, телефон, паспорт, curAdd, статус) ценности('" + txtID.Текст + "', '" + txtLatinName.Текст + "', '" + cbGender.Text + "," + dTPdob.Text+ "," + txtPob.Текст + "', '" + txtPhone.Текст + "', '" + txtPassport.Текст + "," + txtCurAdd.Текст + "," + cbStatus.Текст + " )";
надеюсь, это поможет


phanny 2011

Это одно и то же. поля равны 9, а значения-9.

FM7

если нет, то все ведьмы,имеющие " ++ " между ними, вставят в одно поле! тогда еще одно поле будет пустым!

Рейтинг:
0

heemanshubhalla

КОД ДЛЯ ВСТАВКИ И ОБНОВЛЕНИЯ НА ОДНОЙ КНОПКЕ И УДАЛЕНИЯ КОДА С ДЕМОНСТРАЦИОННЫМ ПРИЛОЖЕНИЕМ ДЛЯ ЗАГРУЗКИ ПЕРЕЙДИТЕ СЮДА :-
Скачать приложение для sql insert , Update , delete с помощью c#
пробовать

{
Sqlcommand, который cmd1 = новая команда sqlcommand("Select * из Agency_detail где Agency_code=" + текстовое поле textbox1.Текст, кон);
SqlDataAdapter da1 = новый SqlDataAdapter();
DataTable dt1 = новый DataTable();
и DA1.Команды selectcommand = cmd1;
и DA1.Заполнить(ст1);
если ((ст1.Строк.Граф и gt; 0) и усилитель; & (ст1.Строки[0][0].Метод toString() != ""))
{
если (MessageBox.Show("ID уже существует, вы хотите его обновить", "подтвердить", MessageBoxButtons.Да, MessageBoxIcon.Question) == DialogResult.Yes)
{
Sqlcommand, который cmdupdate = новая команда sqlcommand("обновление Agency_detail набор Agency_Name=@p1,Phone=@p2,fax=@p3,Mobile_Number=@p4,DOJ=@p5,opening=@p6,Remark=@p7,Address=@p8,city=@p9,state=@p10,zip_code=@p11,email=@Р12 где Agency_code=" + текстовое поле textbox1.Текст этот.кон );
cmdupdate.Параметры.AddWithValue ("@p1", textBox2.Text);
cmdupdate.Параметры.AddWithValue ("@p2", textBox4.Text);
cmdupdate.Параметры.AddWithValue ("@p3", textBox3.Text);
cmdupdate.Параметры.AddWithValue ("@p4", textBox8.Text);
cmdupdate.Параметры.AddWithValue("@p5", dateTimePicker1.Value.Дата);
cmdupdate.Параметры.AddWithValue ("@p6", textBox6.Text);
cmdupdate.Параметры.AddWithValue ("@p7", textBox5.Text);
cmdupdate.Параметры.AddWithValue ("@p8", textBox17.Text);
cmdupdate.Параметры.AddWithValue ("@p9", textBox16.Text);
cmdupdate.Параметры.AddWithValue ("@p10", textBox15.Text);
cmdupdate.Параметры.AddWithValue ("@p11", textBox14.Text);
cmdupdate.Параметры.AddWithValue ("@p12", textBox13.Text);

//кон.кон.Открыть();
cmdupdate.Метод executenonquery();
Ящик для сообщений.Показать("Обновлено");
извлечь данные();
clearall();
}
еще
{

}
}
еще
{

если ((текстовое поле textbox1.Текст != "") и усилитель; & (поле textbox2.Текст != ""))
{
Команда sqlcommand cmd и = новая команда sqlcommand("вставить в Agency_detail values(@para1,@para2,@para3,@para4,@para5,@para6,@para7,@para8,@para9,@para10,@para11,@para12,@para13)"кон);
cmd.параметры.AddWithValue ("@para1", Convert.ToInt64(textBox1.Text));
cmd.параметры.AddWithValue ("@para2", textBox2.Text);
cmd.параметры.AddWithValue ("@para3", Convert.ToInt64(textBox4.Text));
cmd.параметры.AddWithValue ("@para4", Convert.ToInt64(textBox3.Text));
cmd.параметры.AddWithValue ("@para5", Convert.ToInt64(textBox8.Text));
cmd.параметры.AddWithValue("@para6", dateTimePicker1.Value);
cmd.параметры.AddWithValue ("@para7", Convert.Метод todouble(textBox6.Текст));
cmd.параметры.AddWithValue ("@para8", textBox5.Text);
cmd.параметры.AddWithValue ("@para9", textBox17.Text);
cmd.параметры.AddWithValue ("@para10", textBox16.Text);
cmd.параметры.AddWithValue ("@para11", textBox15.Text);
cmd.параметры.AddWithValue ("@para12", Convert.ToInt64(textBox14.Text));
cmd.параметры.AddWithValue ("@para13", textBox13.Text);
//кон.кон.Открыть();
УМК.Метод executenonquery();
извлечь данные();
clearall();
}
else { MessageBox.Показать("идентификатор агентства и имя должны быть обязательными"); }
}
}
поймать (исключение бывший)
{
Ящик для сообщений.Показать(напр.сообщение);
}


CHill60

Этому вопросу уже более 2-х лет!! И пожалуйста, не кричите (все заглавные буквы) - это очень грубо