13. marts 2004 - 22:31
Der er
39 kommentarer og 1 løsning
Problemer med Update i access database, får fejl i C# script
Hej jeg har prøvet at følge en vedledning i at lave en update men får denne fejl. The type or namespace name 'strSQL' could not be found (are you missing a using directive or an assembly reference?) i: strSQL updateCmd = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"]; Se hele koden her: <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="iso-8859-1" debug="true" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.OleDb" %> <% string title; title = "Indsæt nyheder"; %> <script runat="server"> void Page_Load(object Sender, EventArgs E) { string strConnection; string strSQL; OleDbConnection objConnection; OleDbCommand objCommand; strConnection =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Inetpub\wwwroot\eHandel\abcd.mdb"; objConnection = new OleDbConnection(strConnection); objConnection.Open(); strSQL = "SELECT * FROM nyhed WHERE nyhedId = " + Request.QueryString["ID"]; objCommand = new OleDbCommand(strSQL, objConnection); dgData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection); dgData.DataBind(); objConnection.Close(); } void update(object Sender, EventArgs e){ string strConnection, strSQL; OleDbConnection objConnection; OleDbCommand objCommand; strConnection =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Inetpub\wwwroot\eHandel\abcd.mdb"; objConnection = new OleDbConnection(strConnection); objConnection.Open(); strSQL updateCmd = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"]; SqlCommand myCommand = new SqlCommand(updateCmd, myConnection); myCommand.Parameters.Add(new SqlParameter("@nyhedOverskrift", SqlDbType.NVarChar, 11)); myCommand.Parameters.Add(new SqlParameter("@nyhedTekst", SqlDbType.NVarChar, 11)); objCommand = new OleDbCommand(strSQL, objConnection); dgData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection); dgData.DataBind(); objConnection.Close(); } public void dgData_Edit(object sender, EventArgs e) { dgData.EditItemIndex = (int)e.Item.ItemIndex; Databind(); } public void dgData_Cancel(object sender, EventArgs e) { dgData.EditItemIndex = -1; Databind(); } </script> <form runat="server"> <h3>Rediger nyheder</h3> <asp:datagrid id="dgData" runat="server" OnEditCommand="update" OnCancelCommand="dgData_Cancel" OnUpdateCommand="dgData_Update" DataKeyField="nyhedId"> <Columns> <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" /> </Columns> </ASP:DataGrid> </form> Håber der er en der kan hjælpe?
Annonceindlæg fra Immeo
13. marts 2004 - 22:39
#1
Mener du ikke: string updateCmd = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"]; ?
13. marts 2004 - 22:40
#2
strSQL updateCmd = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"]; strSQL referer til en type som du ikke har importeret updateCmd er et var navn mener du mon ikke string strSQL = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"];
13. marts 2004 - 22:40
#3
eller bare: strSQL = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"]; og så bruge strSQL bagefter
13. marts 2004 - 22:40
#4
hehehe turbo Arne ;-)
13. marts 2004 - 22:52
#5
:-)
13. marts 2004 - 22:52
#6
Og et svar
13. marts 2004 - 22:58
#7
Efter at have lavet den ændring: string strSQL = "UPDATE nyhed SET nyhedOverskrift = @nyhedOverskrift, nyhedTekst = @nyhedTekst WHERE nyhedId = " + Request.QueryString["ID"]; laver den nu fejl i: SqlCommand myCommand = new SqlCommand(updateCmd, myConnection); The type or namespace name 'SqlCommand' could not be found (are you missing a using directive or an assembly reference?) ???????
13. marts 2004 - 23:00
#8
Ja fordi der referer du stadigvæk til updateCmd variablen
13. marts 2004 - 23:00
#9
Det var derfor mit første forslag var som det var
13. marts 2004 - 23:22
#10
den siger stadigvæk The type or namespace name 'SqlCommand' could not be found (are you missing a using directive or an assembly reference?) selv hvis jeg har ændret alle strSQL til updateCmd eller omvendt. og jeg syntes ikke lige jeg kan se hvorfor
13. marts 2004 - 23:24
#11
Den SqlCommand skal vel også være en OleDbCommand ?
13. marts 2004 - 23:25
#12
(det er da ihvertfald en OleDbConnection og ikke en SqlConnection du har)
13. marts 2004 - 23:52
#13
Hvad så når den skrive dette nu: e type or namespace name 'SqlParameter' could not be found (are you missing a using directive or an assembly reference?) Jeg er ny til asp.net, og alt dette er vant til PHP så det kræver lidt tilvænning da jeg syntes det er meget sværre i ASP.NET så jeg nok lidt mere hjælp en normalt eller? Jeg har ændret følgende: objCommand = new OleDbCommand(updateCmd, objConnection); myCommand.Parameters.Add(new SqlParameter("@nyhedOverskrift", SqlDbType.NVarChar, 11)); myCommand.Parameters.Add(new SqlParameter("@nyhedTekst", SqlDbType.NVarChar, 11)); dgData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection); dgData.DataBind(); Har fjernet en linje da jeg opdagede jeg havde næste 2 ens.
13. marts 2004 - 23:53
#14
det skal også være en OleDbparameter eller ligende
13. marts 2004 - 23:55
#15
Ja.
14. marts 2004 - 00:17
#16
objCommand.Parameters.Add(new OleDbparameter("@nyhedOverskrift", SqlDbType.VarChar, 11)); virker heller ikke The type or namespace name 'OleDbparameter' could not be found (are you missing a using directive or an assembly reference?)
14. marts 2004 - 00:28
#17
Prøv med OleDbParameter (stort P)
14. marts 2004 - 00:57
#18
nu har samme linje som invalid arguments The best overloaded method match for 'System.Data.OleDb.OleDbParameter.OleDbParameter(string, System.Data.OleDb.OleDbType, int)' has some invalid arguments er det nødvendigt at have SqlDbType.VarChar, 255 på? og ved du hvad 255 skal stå for. jeg regner med det er antallet af karaktere i db feltet, eller er det noget andet? varChar er vel felttypen?
14. marts 2004 - 11:47
#19
new OleDbparameter("@nyhedOverskrift", OleDbType.VarChar) eller new OleDbparameter("@nyhedOverskrift", OleDbType.VarChar, 255)
14. marts 2004 - 11:47
#20
Ja - de 255 er en max. længde.
14. marts 2004 - 13:33
#21
når feltet i tabelen er tekst skal den så være varchar eller noget andet
14. marts 2004 - 13:35
#22
VARCHAR er tekst.
14. marts 2004 - 13:35
#23
varchar er fint (hvis datamængden ikke overstiger 255 tegn)
14. marts 2004 - 13:39
#24
hvis det er memo som det siger i access tabelen er det så memo her, ved du hvor man kan finde ud af hvad alle felterne skal hedde i scriptet
14. marts 2004 - 13:41
#25
Slå OleDbType op i docs og se mulighederne.
14. marts 2004 - 13:44
#26
får nu denne fejl: 'System.EventArgs' does not contain a definition for 'Item' i: dgData.EditItemIndex = (int)e.Item.ItemIndex;
14. marts 2004 - 14:04
#27
EventArgs har tilsyneladende ikke en property Item ...
14. marts 2004 - 14:26
#28
hvor kan man sætte det er det i web.config eller i scriptet det skal være?
14. marts 2004 - 14:28
#29
Det kan du ikke sætte nogen steder. Sådan har Microsoft kodet den klasse.
14. marts 2004 - 14:38
#30
okay hvad gør jeg så ?????
14. marts 2004 - 14:41
#31
Skriver den del af koden om. Måske er det noget andet i e som du kan bruge ?
14. marts 2004 - 19:22
#32
jeg får nu denne fejl stem.Web.UI.WebControls.Panel' does not contain a definition for 'DataSource' i denne linje: dgData.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection); Jeg bruger dog den i andre samen hæng og har ingen fejl der så hvad kan være problemmet.
14. marts 2004 - 19:26
#33
dgData må have en anden type end System.Web.UI.WebControls.Panel i de sammenhænge hvor det virker. Når jeg slår op i docs så har den klasse ikke en DataSource.
14. marts 2004 - 19:44
#34
jeg bruger den på andre sider for at få vist en nyhedsliste og her er der ingen problemer Er der nogen der kunne have en forklaring på dette?
14. marts 2004 - 19:48
#35
14. marts 2004 - 20:03
#36
jeg sider med en ASP.NET for webdesigners bog hvor den bruges overalt i bogen og det er derfra jeg har taget koderne til de andre sider. Jeg har stadig ikke helt forstået opbygningen af .net men den virker som kompliceret. og jeg syntes der er kun få forklaringer på hvad de forskellige ting betyder. Nu har jeg læst mange PHP bøger og de er meget mere beskrivende en de .Net bøger jeg har set indtil nu. Håber jeg finder en løsning
14. marts 2004 - 20:11
#37
14. marts 2004 - 20:26
#38
Korrekt. Men System.Windows.Forms.DataGrid og System.Web.UI.WebControls.Panel er 2 helt forskellige klasser. Og compileren hævder altså at din dgData er en System.Web.UI.WebControls.Panel !
14. marts 2004 - 21:11
#39
lad os roligt antage at compileren har ret, så derfor må du sikre dig hvilken type dine objekter har :-)
14. marts 2004 - 21:58
#40
hvordan eller hvor gør jeg så lige det? Jeg er ved at være noget træt i hovedet hvis jeg har et tilbage. Undskyld
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.