16. februar 2006 - 21:08Der er
19 kommentarer og 1 løsning
udtræk fra mssql
Hej experter :)
Jeg sidder med en text editor og vil rette nogle sider på et site. Dertil skal jeg lave et udtræk fra en mssql database, hvor indholdet af siderne er i. Men editoren kræver en variabel med indholdet fra databasen, for at kunne vise indholdet, det er jo logisk nok. Men hvordan laver jeg udtrækket og smider det i en variabel, som jeg så kan tilføre editoren?
Ja, du siger noget, for først fik jeg også en fejl med at der ikke eksisterede den connection string. Men den eksisterer altså, fordi jeg har brugt den et andet sted.
Men min codebehind ser således ud:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient;
public partial class admin_PageEdit : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { try { IDataReader reader; SqlConnection conn = new SqlConnection("Server=.\\SQLEXPRESS;Database=BogKlub;Trusted_Connection=False"); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Pages WHERE PageId = 1"; reader = cmd.ExecuteReader();
while (reader.Read()) { Label1.Text = reader["PageTxt"].ToString(); }
SqlConnection conn skal erklæres uden for try/catch
Så prøve lige at flytte nedenstående ud i void Page_Load SqlConnection conn = new SqlConnection("Server=.\\SQLEXPRESS;Database=BogKlub;Trusted_Connection=False");
Ja det er samme problemstilling. Problemet opstår når du du prøver at lukke conn og reader i finally. Medmindre de er erklæret helt uden for try/catch kan du ikke tilgå dem der.
Jeg synes det bliver mere og mere underligt med den connection her. Forstår ik hvad der sker, for nu har jeg erstattet linie 41 med det du skrev, og jeg får en ny fejl:
Exception Details: System.InvalidOperationException: ExecuteReader requires an open and available Connection. The connection's current state is closed.
Source Error:
Line 24: Line 25: cmd.CommandText = "SELECT * FROM Pages WHERE PageId = 1"; Line 26: reader = cmd.ExecuteReader(); Line 27: Line 28: while (reader.Read())
Min kode som den er lige nu ser sådan her ud:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient;
public partial class admin_PageEdit : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { IDataReader reader = null; SqlConnection conn = new SqlConnection("Server=.\\SQLEXPRESS;Database=BogKlub;Trusted_Connection=False"); try {
SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM Pages WHERE PageId = 1"; reader = cmd.ExecuteReader();
while (reader.Read()) { Label1.Text = reader["PageTxt"].ToString(); }
Som fejlmeddelsen ret specifikt antyder så mangler forbindelsen at blive åbnet. Det gør du ved at skrive: conn.Open(); inde i din try blok.
Den kode jeg oprindelig skrev til dig var som sagt ikke aftestet, da jeg bare skrev den direkte i svar feltet her på siden. Men fejlmeddelserne fortæller altså en del..
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.