webForumDet fria alternativet

Odbc: INSERT

4 svar · 612 visningar · startad av Kriko

KrikoMedlem sedan dec. 2006382 inlägg
#1

Sådär ja, då var skolan sedan länge svunnen tid och undertecknad har fått tillbaka begäret att lära. ASP.Net låg nära till hands så det fick det bli.

Har pillat en del med WebControls och så nu och ville hoppa på databashantering, vilket inte visade sig vara helt trivialt.

Efter lite bök lyckades jag dock binda ett dataset upphämtat från en MySQL-databas till en repeater. So far, so good. Men sen ville jag försöka lägga in något i databasen med INSERT. Och det är typ där jag är.
Har inte hittat något vettigt egentligen på nätet i övrigt så nu beslutade jag mig för att lägga ödet i era händer. Vad gör jag för fel? Varför msåte jag deklarera en variabel när det är en webcontrol jag vill åt i följande kod?

<%@ Import Namespace = "System.Data" %>
<%@ Import Namespace = "System.Data.Odbc" %>

<script runat="server">

	Sub Page_Load
		
		Dim Conn As OdbcConnection = New OdbcConnection()
		Conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=******; USER=******; PASSWORD=******; DATABASE=aspnet; OPTION=3"
		Conn.Open()
		
		Dim SQL As String = "SELECT * FROM test1 ORDER BY id ASC;"
		
		Dim Adapter As OdbcDataAdapter = New OdbcDataAdapter(SQL, Conn)
		Dim Ds As DataSet = New Dataset()
		Adapter.Fill(Ds)
		
		RPT01.DataSource = Ds
		RPT01.DataBind()
		
		Conn.Close()
		Conn.Dispose()
		
	End Sub
	
	Sub Add(Sender As Object, E As EventArgs)
		
		Dim Conn As OdbcConnection = New OdbcConnection()
		Conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=******; USER=******; PASSWORD=******; DATABASE=aspnet; OPTION=3"
		Conn.Open()
		
		Dim Cmd As OdbcCommand = New OdbcCommand("INSERT INTO test1 (namn, strtext) VALUES ('" & strNamn.Text & "', '" & strText.Text & "')", Conn)
		
		Cmd.ExecuteNonQuery()
		
		Dim SQL As String = "SELECT * FROM test1 ORDER BY id ASC;"
		
		Dim Adapter As OdbcDataAdapter = New OdbcDataAdapter(SQL, Conn)
		Dim Ds As DataSet = New Dataset()
		Adapter.Fill(Ds)
		
		RPT01.DataSource = Ds
		RPT01.DataBind()
		
		Conn.Close()
		Conn.Dispose()
	
	End Sub

</script>

<html>

	<head><title>ASP.Net + MySQL Test</title></head>
	
	<body>
	
		<form runat="server">
		
			<asp:Repeater id="RPT01" runat="server">
			
				<HeaderTemplate>
				
					<table cellpadding="2" cellspacing="0">
					<tr>
					<td width="30"><b>id</b></td>
					<td width="150"><b>name</b></td>
					<td width="300"><b>text</b></td>
					</tr>
				
				</HeaderTemplate>
				
				<ItemTemplate>
				
					<tr>
					<td><%#Container.DataItem("id")%></td>
					<td><%#Container.DataItem("namn")%></td>
					<td><%#Container.DataItem("strtext")%></td>
					</tr>
				
				</ItemTemplate>
				
				<AlternatingItemTemplate>
				
					<tr style="background-color: #eee;">
					<td><%#Container.DataItem("id")%></td>
					<td><%#Container.DataItem("namn")%></td>
					<td><%#Container.DataItem("strtext")%></td>
					</tr>
				
				</AlternatingItemTemplate>
				
				<FooterTemplate>
				
					<tr style="border-top: 1px solid black">
					<td><asp:TextBox Text="*" Columns="1" id="intId" ReadOnly="true" runat="server" /></td>
					<td><asp:TextBox id="strNamn" runat="server" /></td>
					<td><asp:TextBox id="strText" runat="server" /> <asp:Button id="btnSubmit" Text="Add" OnClick="Add" runat="server" /></td>
					</tr>
					</table>
				
				</FooterTemplate>
			
			</asp:Repeater>
		
		</form>
	
	</body>

</html>

Felmeddelandet jag får är:
BC30451: Name 'strNamn' is not declared.

Känner mig lite dum som inte fattar detta. :/
Hjälp uppskattas. :)

inspiroMedlem sedan sep. 2005673 inlägg
#2

När du har kontroller i en annan kontroll (i det här fallet dina textboxar i en repeater) så är det lite lurigare att komma åt dem. Strunta i din footertemplate och lägg dina textboxar under repeatern istället.

        <table cellpadding="2" cellspacing="0">
            <tr>
                <td width="30">
                    <b>id</b></td>
                <td width="150">
                    <b>name</b></td>
                <td width="300">
                    <b>text</b></td>
            </tr>
            <asp:Repeater ID="RPT01" runat="server">
                <ItemTemplate>
                    <tr>
                        <td>
                            <%#Container.DataItem("id")%>
                        </td>
                        <td>
                            <%#Container.DataItem("namn")%>
                        </td>
                        <td>
                            <%#Container.DataItem("strtext")%>
                        </td>
                    </tr>
                </ItemTemplate>
                <AlternatingItemTemplate>
                    <tr style="background-color: #eee;">
                        <td>
                            <%#Container.DataItem("id")%>
                        </td>
                        <td>
                            <%#Container.DataItem("namn")%>
                        </td>
                        <td>
                            <%#Container.DataItem("strtext")%>
                        </td>
                    </tr>
                </AlternatingItemTemplate>
            </asp:Repeater>
            <tr style="border-top: 1px solid black">
                <td>
                    <asp:TextBox Text="*" Columns="1" ID="intId" ReadOnly="true" runat="server" /></td>
                <td>
                    <asp:TextBox ID="strNamn" runat="server" /></td>
                <td>
                    <asp:TextBox ID="strText" runat="server" />
                    <asp:Button ID="btnSubmit" Text="Add" OnClick="Add" runat="server" /></td>
            </tr>
        </table>
inspiroMedlem sedan sep. 2005673 inlägg
#3

...och ska du ändå lära dig asp.net från början, kör med c# istället. Betydligt fler använder det (du får lättare hjälp) och väldigt många kodexempel på nätet är skrivna i c#!

CatZMedlem sedan jan. 20022 440 inlägg
#4

inspiro skrev:

...och ska du ändå lära dig asp.net från början, kör med c# istället. Betydligt fler använder det (du får lättare hjälp) och väldigt många kodexempel på nätet är skrivna i c#!

Lär dig C# för att det är ett bättre språk helt enkelt ;)

inspiroMedlem sedan sep. 2005673 inlägg
#5

CatZ skrev:

Lär dig C# för att det är ett bättre språk helt enkelt ;)

Jag ville inte vara så kategorisk, men det var det jag menade egentligen... ;)

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