webForumDet fria alternativet

formulär-sql problem

8 svar · 312 visningar · startad av dea

deaMedlem sedan dec. 2002387 inlägg
#1

Asp.net - C#

om man hämtar upp data från databas till TextBoxar i ett formulär med hjälp av:

string SQL3 = "SELECT * FROM Users WHERE UserID = "+ (Session["UserID"]);
	SqlCommand com = new SqlCommand(SQL3, con);
	con.Open();
	SqlDataReader dr3 = com.ExecuteReader();
			
	if ( dr3.Read() )
	{
		TextboxFnamn.Text += (dr3["Fnamn"]).ToString();
		TextboxEnamn.Text += (dr3["Enamn"]).ToString();
		TextboxEpost.Text += (dr3["Epost"]).ToString();
		TextboxHomepage.Text += (dr3["Homepage"]).ToString();
		TextboxCity.Text += (dr3["City"]).ToString();
		TextboxAge.Text += (dr3["Age"]).ToString();
		TextboxAboutme.Text += (dr3["Aboutme"]).ToString();
		dr3.Close();
		con.Close();
		Label1.Text = "<h1>Uppdatera din profil!</h1>";
	}

Om man nu vill ändra i formuläret och vill skriva något annat, vad skriver man då i knappen?

om vi skriver så här så skriver den in det nya man skrivit men det tar inte bort det gamla!?
är det inte det UPDATE gör - byter ut?

	string sql = "UPDATE Users SET Fnamn = '" +Fnamn.Text +"' WHERE UserID = "+ (Session["UserID"]);
NETworkMedlem sedan juni 20011 732 inlägg
#2

Byt ut += mot bara ett = annars lägger den till värdet på det värde som redan finns.

TextboxCity.Text = (dr3["City"]).ToString();

Förstod jag dig rätt?

deaMedlem sedan dec. 2002387 inlägg
#3

NETwork skrev:

Byt ut += mot bara ett = annars lägger den till värdet på det värde som redan finns.

Förstod jag dig rätt?

Nej, eller så förstår inte jag dig rätt!?'
vilket += menar du? tar jag bort dem från if-satsen så blir det inte dubbelt i textboxen, men det är inte problemet, problemet är hur jag skriver min SQL-sats för att uppdatera i databasen när jag trycker på formulärknappen..

NETworkMedlem sedan juni 20011 732 inlägg
#4

Aha. Sql-satsen ser riktig ut, hur ser koden ut där du uppdaterar din tabell?

deaMedlem sedan dec. 2002387 inlägg
#5

Aha. Sql-satsen ser riktig ut, hur ser koden ut där du uppdaterar din tabell?

hmm, tabell?

så här ser knappen ut:

private void Button1_Click(object sender, System.EventArgs e)
		{
			string sql = "UPDATE Users SET Fnamn = '" +Fnamn.Text+ "' WHERE UserID = "+ (Session["UserID"]);

			SqlCommand com2 = new SqlCommand(sql, con);
			try
			{
				con.Open();
				com2.ExecuteNonQuery();
			}
			catch(SqlException error)
			{
				Label12.Text = error.Message;
			}
			finally
			{
				con.Close();
			}
		}
NETworkMedlem sedan juni 20011 732 inlägg
#6

Prova:

com2.Connection.Open();
com2.ExecuteNonQuery();
com2.Connection.Close();
deaMedlem sedan dec. 2002387 inlägg
#7

tyvärr ändrade inte det något..

om namnet i textboxen är Kalle och jag markerar det och skriver Nisse och trycker på skicka-knappen så skrivs Kalle ut i Textboxen!

Argh

deaMedlem sedan dec. 2002387 inlägg
#8

Så här löste vi det..

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
visaPost();
}

	}

	private void visaPost()
	{
		visa.Text = "Du är inloggad som \<strong\>" + Convert.ToString(Session\["AnvNamn"\]) + "\</strong\>";
		
		string SQL3 = "SELECT \* FROM Users WHERE UserID = "+ (Session\["UserID"\]);
		SqlCommand com = new SqlCommand(SQL3, con);
		con.Open();
		SqlDataReader dr3 = com.ExecuteReader();
		
		if ( dr3.Read() )
		{
			Fnamn.Text = (dr3\["Fnamn"\]).ToString();
			Enamn.Text = (dr3\["Enamn"\]).ToString();
			Epost.Text = (dr3\["Epost"\]).ToString();
			Homepage.Text = (dr3\["Homepage"\]).ToString();
			City.Text = (dr3\["City"\]).ToString();
			Age.Text = (dr3\["Age"\]).ToString();
			Aboutme.Text = (dr3\["Aboutme"\]).ToString();
			dr3.Close();
			con.Close();
			Label1.Text = "\<h1\>Uppdatera din profil!\</h1\>";
		}	
		else
		{
			Label1.Text = "\<h1\>Fyll i din profil!\</h1\>";
		}
	}

	private void Button1_Click(object sender, System.EventArgs e)
	{
		string sql = "UPDATE Users SET Fnamn = '" +Fnamn.Text+ "' WHERE UserID = "+ Session\["UserID"\];
		//"+ Session\["UserID"\]
		//Response.Write(sql);
		//'"+ AnvNamn.Text + "'AND Password ='" + pw.Text + "'";
		SqlCommand com2 = new SqlCommand(sql, con);
		try
		{
			com2.Connection.Open();
			com2.ExecuteNonQuery();
		}
		catch(SqlException error)
		{
			Label12.Text = error.Message;
		}
		finally
		{
			com2.Connection.Close();
		}
	}

Innan när vi tryckte på knappen så genomfördes bara Page_Load men inte uppdateringen.

m_soderlundMedlem sedan sep. 20026 425 inlägg
#9

Aha. Jag skulle precis skriva kod som jag vet fungerar, och så kom lösningen på problemet ändå. Nåväl. :r

136 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)