Connection til databasen ligger i en dll og den fungerer fint..
og jeg har testet SQL'en i access og den virker. Problemet er så at det virker ikke på siden. Kan det være pga manglede Rettigheder i windows? (XP pro)
Eller kan det være noget andet?
p.s. jeg får ingen fejlmeddelelse selvom jeg har en try...catch på den
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Kan du ikke vise os din SkrivData-metode ? Binder du data til teksboksene på noget tidspunkt ? Har du sikkerhed for at du overhovedet får kørt den kode du har vist ?
Har du opdateret data i databasen via websitet? Eller gennem Access? Hvis det er sidstnævnte, er det ikke ensbetydende med at rettighederne er sat korrekt. Hvis du ingenting har gjort for at ændre rettighederne på mdb-filen, er det højst sandsynligt den det er galt med.
public function SkrivData(strSQL as string) as OledbDataReader Try objCmd = new OledbCommand(strSQL,ObjConn) objCmd.ExecuteNonQuery() Catch ex as exception 'response.write(ex.tostring()) end try end function
med hensyn til Tabellen.. som sagt så fungerer SQL'en fint i Access så der er ingen problemer der...
og nej siden fejler ikke.. den fanger hvertfald ingen exception.
SQL Injection Attacks er hvor en besøgende på dit website indtaster SQL i felterne, det kan være ret farligt alt efter hvor kreativ/dygtig vedkommende er. Prøv at Google efter det, der er skrevet mange kloge ord om emnet.
Prøv at fjerne din "try - catch", er du helt sikker på at den ikke fejler? Koden som du har vist, vil ikke skabe en fejl.
Er din connection open før du kører SQL'en (det er den formentlig, ellers ville du få en fejl).
Jeg kan desværre ikke lige huske hvordan man sammensætter tekststrenge i C#, er du sikker på at det virker? Prøv evt. at skrive din SQL ud lige før den bliver kørt.
System.InvalidOperationException: ExecuteNonQuery: Connection property has not been initialized. at System.Data.OleDb.OleDbCommand.ValidateConnectionAndTransaction(String method, Int32& localState) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at Database.DataBaseOledb.SkrivData(String strSQL)
Og metoden SkrivData ser således ud:
public function SkrivData(strSQL as string) as OledbDataReader Try objCmd = new OledbCommand(strSQL,ObjConn) objCmd.ExecuteNonQuery() HttpContext.Current.Response.Write("hejsa") Catch ex as exception HttpContext.Current.Response.Write(ex.tostring()) end try end function
public function OpenDB(databasenavn as string) as oledbconnection Try 'DBSti = ConfigurationSettings.AppSettings("databaseoledb") & databasenavn & ".mdb" DBSti = HttpContext.Current.Request.PhysicalApplicationPath & "\db\" & databasenavn & ".mdb" strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" strConn += "Data Source=" & DBSti ObjConn = new OledbConnection(strConn) objConn.Open() Catch ex as exception 'response.write(ex.tostring()) end try end function
Public Class DataBaseOledb Public strConn as string Public objConn as OledbConnection Public DBsti as string Public data As OledbDataReader Public ObjCmd As OledbCommand
public function OpenDB(databasenavn as string) as oledbconnection Try 'DBSti = ConfigurationSettings.AppSettings("databaseoledb") & databasenavn & ".mdb" DBSti = HttpContext.Current.Request.PhysicalApplicationPath & "\db\" & databasenavn & ".mdb" strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" strConn += "Data Source=" & DBSti ObjConn = new OledbConnection(strConn) objConn.Open() Catch ex as exception 'response.write(ex.tostring()) end try end function
public function DanData(strSQL as string) as OledbDataReader Try objCmd = new OledbCommand(strSQL,ObjConn) data = objCmd.ExecuteREader() Catch ex as exception 'response.write(ex.tostring()) end try end function
public function SkrivData(strSQL as string) as OledbDataReader Try objCmd = new OledbCommand(strSQL,ObjConn) objCmd.ExecuteNonQuery() HttpContext.Current.Response.Write("hejsa") Catch ex as exception HttpContext.Current.Response.Write(ex.tostring()) end try end function
public function CloseDB() as oledbconnection Try ObjConn.Close ObjConn = Nothing Catch ex as exception 'response.write(ex.tostring()) end try end function
public function SletBlank(Udtrukket as string) as string dim valgtstring as string valgtstring = Microsoft.VisualBasic.RTrim(Udtrukket) return valgtstring end function
Protected lblopretBrugertype as System.Web.UI.WebControls.label Protected lblopretBrugerID as System.Web.UI.WebControls.label Protected txtopretBrugernavn as System.Web.UI.WebControls.textbox Protected txtopretAdgangskode as System.Web.UI.WebControls.textbox Protected txtopretNavn as System.Web.UI.WebControls.textbox Protected txtopretEmail as System.Web.UI.WebControls.textbox Protected txtopretLand as System.Web.UI.WebControls.textbox Protected txtopretBy as System.Web.UI.WebControls.textbox Protected txtopretPostnummer as System.Web.UI.WebControls.textbox Protected txtopretHjemmeside as System.Web.UI.WebControls.textbox Public ObjCmd As OledbCommand Public objConn as OledbConnection
Dim DataOleDB as new DataBaseOleDB()
Public sub Page_Load(Source as Object, E as EventArgs) lblopretbrugerid.text = nyBrugerID() lblopretbrugertype.text = "bruger" end sub
Public sub click_annuller(Source as Object, E as EventArgs) response.redirect(request.path) end sub
Public sub click_opret(Source as Object, E as EventArgs)
If txtOpretpostnummer.text = nothing postnummer = 0 else postnummer = txtOpretpostnummer.text end if
try DataOleDB.OpenDB("Tomo") Dim sSql as string = "INSERT INTO BRUGERE VALUES (" & NyBrugerID() & ",'" & txtOpretBrugernavn.text & "','" & txtOpretAdgangskode.text & "','" & txtOpretnavn.text & "','" & txtOpretemail.text & "','" & txtOpretland.text & "','" & txtOpretby.text & "',0,'" & txtOprethjemmeside.text & "',0,2);" 'response.write(sSql) DataOleDB.SkrivData(sSql) DataOleDB.Closedb() catch ex as exception response.write(ex.tostring()) end try
try DataOleDB.OpenDB("Tomo") Dim Sql2 as string = "SELECT * from Brugere WHERE Brugernavn = '" & lblopretBrugerID.text & "';" 'response.write(sSql) DataOleDB.Dandata(SQL2) If DataOleDB.Data.read() then lblopretBrugerID.text = "Brugeren er nu oprettet" lblopretbrugerID.ForeColor = System.Drawing.Color.blue else lblopretBrugerID.text = "Brugeren er ikke oprettet" lblopretbrugerID.ForeColor = System.Drawing.Color.red end if DataOleDB.CloseDB() catch ex as exception response.write(ex.tostring()) end try
'end if
'response.redirect(request.rawurl)
end sub
function nyBrugerid() as integer dim nummer as integer try DataOleDB.opendb("tomo") DataOleDB.DanData("SELECT BrugerID FROM Brugere ORDER BY BrugerID desc;") If DataOleDB.Data.read() then nummer = DataOleDB.Data("BrugerID") else nummer = 0 end if DataOleDB.closedb() catch ex as exception response.write(ex.tostring()) end try nummer = nummer + 1 return nummer end function
function tjekBrugernavn(Bn as string) as string dim nummer as integer try DataOleDB.opendb("tomo") DataOleDB.DanData("SELECT * FROM Brugere Where Brugernavn ='" & Bn & "';") If DataOleDB.Data.read() then return "true" else return "false" end if DataOleDB.closedb() catch ex as exception response.write(ex.tostring()) end try end function
end Class
og før du hagler min kode ned så er den ikke færdig endnu. :) har kun arbejdet i 2 dage. :P
Nå for... ja det har jeg ikke noget forstand på. Ved ikke hvordan det funger.
Er du bombesikker på at metoden bliver kaldt ? - jeg ville tro at det var nødvendigt for dig at have sådan en her i koden : Protected WithEvents lnkopret As System.Web.UI.WebControls.LinkButton
Det her ser lidt specielt ud : DBCHECK Calling OpenDB 0,312024 0,001980 DBCHECK Calling OpenDB 0,531398 0,219374 DBCHECK Calling CloseDB 0,656387 0,124989 DBCHECK Calling SkrivData 0,683643 0,027256 DBCHECK Calling CloseDB 0,714550 0,030908 DBCHECK Calling OpenDB 0,714730 0,000180 DBCHECK Calling CloseDB læg mærke til sekvensen af open og close
Jeg har fundet ud af det.. det er fordi jeg har en funktion der henter den nyeste ID fra databasen.. den lukker jo forbindelsen.. så jeg skal lige have fundet en løsning.. tror jeg har den.. :)
Jeg takker for alle pointene... Men det er altså også meget fint uden... Jeg skal nok svare på din spørgsmål alligevel :o) Fedt at at du fik det til at funge. Mvh
lolz.... Hvis du spørger min kone er jeg nok ikke boss :D
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.