Проблема с SQL и типом Datetime
Код:
String insertCmd = "insert into stat values ('" + name + "'," + DateTime.Now + ",'" + User.Identity.Name + "',"+rez+")";
Дату получаю с помощью DateTime.Now. Если ввожу руками то он пропускает такую запись нормально.
В чем может быть проблема?
Цитата: nevile
В чем может быть проблема?
В том что вы конструируете запрос строкой.
Пользуйтесь классом SqlCommand с параметрами.
Код:
String insertCmd = "insert into stat values ('" + name + "'," + DateTime.Now + ",'" + User.Identity.Name + "'," + rez + ")";
SqlConnection ConnectionIns = new SqlConnection("Data Source=(local)\\SQLExpress;Initial Catalog=training;Integrated Security=True");
SqlCommand CommandIns = new SqlCommand(insertCmd, ConnectionIns);
ConnectionIns.Open();
CommandIns.ExecuteNonQuery();
ConnectionIns.Close();
SqlConnection ConnectionIns = new SqlConnection("Data Source=(local)\\SQLExpress;Initial Catalog=training;Integrated Security=True");
SqlCommand CommandIns = new SqlCommand(insertCmd, ConnectionIns);
ConnectionIns.Open();
CommandIns.ExecuteNonQuery();
ConnectionIns.Close();
Все проблема решена, надо было поставить одиночные кавычки при записи DateTime
Цитата: nevile
Немного не понял как вы предлагаете сделать?
В первую очередь, я предлагаю ознакомиться с документацией.
В качестве примера:
Код:
string connection_string = @"Data Source=.\sqlexpress;Initial Catalog=my_data_base;Integrated Security=True;Pooling=True";
using (SqlConnection con = new SqlConnection(connection_string)) {
con.Open();
string cmd_text = @"
INSERT INTO MyFriends(nick, address, birth_date)
VALUES(@nick, @address, @birth_date)";
using (SqlCommand cmd = new SqlCommand(cmd_text, con)) {
cmd.Parameters.Add("@nick", System.Data.SqlDbType.VarChar).Value = "hardcase";
cmd.Parameters.Add("@address", System.Data.SqlDbType.VarChar).Value = "City17";
cmd.Parameters.Add("@birth_date", System.Data.SqlDbType.DateTime).Value = new DateTime(1986, 7, 11);
cmd.ExecuteNonQuery();
}
}
using (SqlConnection con = new SqlConnection(connection_string)) {
con.Open();
string cmd_text = @"
INSERT INTO MyFriends(nick, address, birth_date)
VALUES(@nick, @address, @birth_date)";
using (SqlCommand cmd = new SqlCommand(cmd_text, con)) {
cmd.Parameters.Add("@nick", System.Data.SqlDbType.VarChar).Value = "hardcase";
cmd.Parameters.Add("@address", System.Data.SqlDbType.VarChar).Value = "City17";
cmd.Parameters.Add("@birth_date", System.Data.SqlDbType.DateTime).Value = new DateTime(1986, 7, 11);
cmd.ExecuteNonQuery();
}
}
Цитата: nevile
Все проблема решена, надо было поставить одиночные кавычки при записи DateTime
Вы ошибаетесь. Формировать SQL-команду путем конкатенации строк - очень плохая практика.
Возможно, сейчас буду разбираться с вашим примером. У меня просто очень мало опыта.