27. oktober 2005 - 13:47Der er
33 kommentarer og 1 løsning
skrive dato i en tekstboks og få den ned i en db
Jeg har lavet således at man kan skrive noget i nogle tekstbokse incl noget dato, men jeg kan ikke finde ud af at få datoen med ned i databasen.. Nogen der kan hjælpe?
private void bnCreateEvent_Click(object sender, System.EventArgs e) { //Opretter forbindelse til databasen string ConnectStr = "server=MONTYMUZ;uid=sa;pwd=03051996;database=5SEMTEST_DB"; SqlConnection dbConn = new SqlConnection(ConnectStr); //Indsamler oplysningerne der er skrevet i tekstboksene int result; string sql, headLine, body, date; headLine = tbHeadline.Text; body = tbBody.Text; date = TextBox1.Text;
//Indsætter oplysningerne i "Authors" tabellen i databasen sql = string.Format("INSERT INTO Event(HeadLine, Story, Date) Values('{0}','{1}','{2}');", headLine, body, date); SqlCommand SqlCmd; SqlCmd = new SqlCommand(); SqlCmd.CommandText = sql; dbConn.Open(); SqlCmd.Connection = dbConn; result = SqlCmd.ExecuteNonQuery(); dbConn.Close();
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
JEg har ændret den tilbage til det oprindelige som du sagde Arne.. Så får jeg denne fejl:
Serverfejl i programmet '/5sem/SKiste'. --------------------------------------------------------------------------------
Syntax error converting datetime from character string. Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.
Detaljer om undtagelse: System.Data.SqlClient.SqlException: Syntax error converting datetime from character string.
Jamen Arne så må du jo lige give et crashcourse til mig i det...:-) Jeg har set dig anbefale det i andre indlæg, men jeg synes ikke jeg kan finde noget ordenligt om det på nettet ( jeg er ikke go til at søge)..
using System; using System.Threading; using System.Data; using System.Data.SqlClient;
class MainClass { public static void Main(string[] args) { //Laver en connection til databasen SqlConnection con = new SqlConnection("server=ARNEPC3;Integrated Security=SSPI;database=Test"); con.Open(); //Opretter en table dtest SqlCommand cre = new SqlCommand("CREATE TABLE dtest (i INTEGER PRIMARY KEY, d DATETIME)", con); cre.ExecuteNonQuery(); //opretter en commando til at indsætte data I tabel SqlCommand ins = new SqlCommand("INSERT INTO dtest VALUES (@i, @d)", con); //Det er så her jeg taber tråden  ins.Parameters.Add("@i", SqlDbType.Int); ins.Parameters.Add("@d", SqlDbType.DateTime); for(int i = 0; i < 10; i++) { ins.Parameters["@i"].Value = i; ins.Parameters["@d"].Value = DateTime.Now; ins.ExecuteNonQuery(); //Vent 1 sek inden den fortsætter> Thread.Sleep(1000); } //Udskriver alle rækker fra tabellen I konsollen Console.WriteLine("All rows :"); SqlCommand sel = new SqlCommand("SELECT * FROM dtest", con); //Taber tråden igen SqlDataReader rdr = sel.ExecuteReader(); while(rdr.Read()) { int i = (int)rdr[0]; DateTime d = (DateTime)rdr[1]; Console.WriteLine(i + " " + d); } rdr.Close(); Console.WriteLine("Rows last 5 seconds since " + DateTime.Now + " :"); SqlCommand sel2 = new SqlCommand("SELECT * FROM dtest WHERE d > @d", con); sel2.Parameters.Add("@d", SqlDbType.DateTime); sel2.Parameters["@d"].Value = DateTime.Now.AddSeconds(-5); SqlDataReader rdr2 = sel2.ExecuteReader(); while(rdr2.Read()) { int i = (int)rdr2[0]; DateTime d = (DateTime)rdr2[1]; Console.WriteLine(i + " " + d); } rdr2.Close(); SqlCommand drp = new SqlCommand("DROP TABLE dtest", con); drp.ExecuteNonQuery(); con.Close(); } }
Ved ikke om det er rigtig, men det jeg har lavet som kommentar er ca det jeg forstår af det du har skrevet :(
Hele ideen er at du kan: - angive @d i din SQL sætning - angive at @d er en DateTime - selv parse tb.Text til en DateTime (*) - indsætte den DateTime som værdi for @d
// fortæller at @i er en int og @d en datetime ins.Parameters.Add("@i", SqlDbType.Int); ins.Parameters.Add("@d", SqlDbType.DateTime); for(int i = 0; i < 10; i++) { // sætter værdi af @i og @d ins.Parameters["@i"].Value = i; ins.Parameters["@d"].Value = DateTime.Now; // udfører query ins.ExecuteNonQuery(); //Vent 1 sek inden den fortsætter> Thread.Sleep(1000); }
ok.. jeg prøver lige at sidde og lege med det... der kommer nok et sp. eller 2 i en ny tråd hehe
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.