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();
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.