webForumDet fria alternativet

Insert i MySQL nybörjarproblem

.NETur .NET

11 svar · 874 visningar · startad av TomKarl

Medlem sedan okt. 200720 inlägg
Frågan#1

Hejsan!
Sitter här och försöker få till det med ASP.Net 2.0 och MySQL
Jag har kommit så långt att jag kan läsa data ur databasen, men att lägga in data var värre...

Jag får:

Compiler Error Message: BC30002: Type 'strConnectionString' is not defined.

Source Error:

Line 11: Sub laggtill(ByVal sender As Object, ByVal e As System.EventArgs)
Line 12:
Line 13: Dim MyConString As strConnectionString
Line 14:
Line 15:

Tack på förhand
/Tomas

<%@ Page Language="VB" Debug="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Sub laggtill(ByVal sender As Object, ByVal e As System.EventArgs)
    
    Dim MyConString As strConnectionString        

        

           strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=xxxxxxxx; DATABASE=xxxxx; UID=xxxxx; PASSWORD=xxxxx; OPTION=3" 
           OdbcConnection myConnection = new OdbcConnection(strConnectionString);
           myConnection.Open();
           string strQuery = "INSERT INTO tbl_users(Fornamn,Efternamn,Tfnnummer) VALUES (?Fornamnx, ?Efternamnx, ?Tfnnummerx)";
    
           OdbcCommand myCommand = new OdbcCommand(strQuery, myConnection);
    
           
           myCommand.Parameters.AddWithValue("?Fornamnx", txtFornamn.Text);
           myCommand.Parameters.AddWithValue("?Efternamnx", txtEfternamn.Text);
	   myCommand.Parameters.AddWithValue("?Tfnnummerx", txtTfnnummer.Text);	
   		
           myCommand.ExecuteNonQuery();
           myConnection.Close();  
       
    End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>MySQL .NET Test Lägg till data</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <h4>
            Lägg till post</h4>
        <p>
            Förnamn<br />
            <asp:TextBox ID="txtFornamn" runat="server" Width="100px"></asp:TextBox></p>
        <p>
            Efternamn</p>
        <p>
            <asp:TextBox ID="txtEfternamn" runat="server" Width="100px"></asp:TextBox></p>
        <p>
            Tfn. nummer</p>
        <p>
            <asp:TextBox ID="txtTfnnummer" runat="server" Width="100px"></asp:TextBox></p>
        <p>
            <asp:Button ID="Button1" runat="server" OnClick="laggtill" Text="Lägg till" /></p>
    
    </div>
    </form>
</body>
</html>
Medlem sedan juni 20014 421 inlägg
#2

Dim strConnectionString As String

Medlem sedan okt. 200720 inlägg
#3

colione skrev:

Dim strConnectionString As String

Fixat. Tack

Nästa problem:

Compiler Error Message: BC30108: 'OdbcConnection' is a type and cannot be used as an expression.

Source Error:

Line 16:
Line 17: strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=xxxxxxxx; DATABASE=xxxxxxx; UID=xxxxx; PASSWORD=xxxxxx; OPTION=3"
Line 18: OdbcConnection myConnection = new OdbcConnection(strConnectionString);
Line 19: myConnection.Open();
Line 20: string strQuery = "INSERT INTO tbl_users(Fornamn,Efternamn,Tfnnummer) VALUES (?Fornamnx, ?Efternamnx, ?Tfnnummerx)";

Source File: save.aspx Line: 18

Medlem sedan okt. 200720 inlägg
#4

En liten bit på väg...

Nu laddas sidan, men när jag försöker spara data får jag följande:

ERROR [23000] [MySQL][ODBC 3.51 Driver][mysqld-4.1.21-standard]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Fornamnx, 'hult'Efternamnx, '787878787'Tfnnummerx)' at line 1
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.Odbc.OdbcException: ERROR [23000] [MySQL][ODBC 3.51 Driver][mysqld-4.1.21-standard]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Fornamnx, 'hult'Efternamnx, '787878787'Tfnnummerx)' at line 1

Source Error:

Line 30: myCommand.Parameters.AddWithValue("?Tfnnummerx", txtTfnnummer.Text)
Line 31:
Line 32: myCommand.ExecuteNonQuery()
Line 33: myConnection.Close()
Line 34:

Source File: save.aspx Line: 32

Nu ser koden ut så här:

Sub laggtill(ByVal sender As Object, ByVal e As System.EventArgs)
    
Dim strConnectionString As String
Dim strQuery As String
Dim MyConnection As OdbcConnection
Dim myCommand As OdbcCommand      

        

strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=xxxx; DATABASE=xxxxx; UID=xxxxx; PASSWORD=xxxxx; OPTION=3" 
MyConnection = new OdbcConnection(strConnectionString)
MyConnection.Open()
strQuery = "INSERT INTO tbl_users(Fornamn,Efternamn,Tfnnummer) VALUES (?Fornamnx, ?Efternamnx, ?Tfnnummerx)"
    
myCommand = new OdbcCommand(strQuery, myConnection)
    
           
myCommand.Parameters.AddWithValue("?Fornamnx", txtFornamn.Text)
myCommand.Parameters.AddWithValue("?Efternamnx", txtEfternamn.Text)
myCommand.Parameters.AddWithValue("?Tfnnummerx", txtTfnnummer.Text)	
   		
myCommand.ExecuteNonQuery()
myConnection.Close()  
       
End Sub
Medlem sedan dec. 20014 239 inlägg
#5
  private static void laggtillPost(string minStrang)
    {
        using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["minConnectioniWebconfig"].ToString()))
        {

            using (MySqlCommand cmd = new MySqlCommand())
            {

                cmd.CommandText = "insert into tblmintabell(Mittfalt) VALUES(?Mindatain)";
                cmd.Parameters.Add("?Mindatain", MySqlDbType.VarChar).Value = minStrang;
                cmd.Connection = conn;
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
        }
    }

Exempel i C#

Min fråga är varför du använder gamla ODBC drivrutinen?

Medlem sedan okt. 200720 inlägg
#6

Zaiman skrev:

Exempel i C#

Min fråga är varför du använder gamla ODBC drivrutinen?

Dom enda som jag har hittat exempel på...

Du har inget exempel i VB?

Medlem sedan dec. 20014 239 inlägg
#7

Här är en i VB fast den använder en StoredProcedure. Principen är den samma. Och lite slarvigt skriven ser jag :l

Public Shared Sub Add(ByVal strMessage As String)
        Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("minanslutning").ConnectionString)
            Using command As New SqlCommand("AddPost", conn)
                command.CommandType = CommandType.StoredProcedure
                command.Parameters.Add(New SqlParameter("@Meddelande", strMessage))
                conn.Open()
                command.ExecuteNonQuery()
            End Using
        End Using
    End Sub
Medlem sedan okt. 200720 inlägg
#8

Zaiman skrev:

Här är en i VB fast den använder en StoredProcedure. Principen är den samma. Och lite slarvigt skriven ser jag

Tyvärr för avancerat för mig, skulle behöva ett komplett exempel

Medlem sedan dec. 20014 239 inlägg
Medlem sedan okt. 200720 inlägg
Medlem sedan okt. 200720 inlägg
#11

TomKarl skrev:

Tack! Ska läsa det ikväll.

Blev inge klokare :(
Koden skapar en ny rad i databasen men lägger inte in värdena från text boxarna...
Någon som har någon lösning? sidan i sin helhet nu:

<%@ Page Language="VB" Debug="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Sub laggtill(ByVal sender As Object, ByVal e As System.EventArgs)
    
    Dim strConnectionString As String
    Dim strQuery As String
    Dim MyConnection As OdbcConnection
    Dim myCommand As OdbcCommand      

        

           strConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=xxxxx; DATABASE=xxxxxx; UID=xxxxxx; PASSWORD=xxxxx; OPTION=3" 
		   MyConnection = new OdbcConnection(strConnectionString)
		   MyConnection.Open()
        strQuery = "INSERT INTO tbl_users(Fornamn,Efternamn,Tfnnummer) VALUES (@Fornamnx, @Efternamnx, @Tfnnummerx)"
    
           myCommand = new OdbcCommand(strQuery, myConnection)
    
           
        myCommand.Parameters.AddWithValue("@Fornamnx", txtFornamn.Text)
        myCommand.Parameters.AddWithValue("@Efternamnx", txtEfternamn.Text)
        myCommand.Parameters.AddWithValue("@Tfnnummerx", txtTfnnummer.Text)
   		
           myCommand.ExecuteNonQuery()
           myConnection.Close()  
       
    End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>MySQL .NET Test Lägg till data</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <h4>
            Lägg till post</h4>
        <p>
            Förnamn<br />
            <asp:TextBox ID="txtFornamn" runat="server" Width="100px"></asp:TextBox></p>
        <p>
            Efternamn</p>
        <p>
            <asp:TextBox ID="txtEfternamn" runat="server" Width="100px"></asp:TextBox></p>
        <p>
            Tfn. nummer</p>
        <p>
            <asp:TextBox ID="txtTfnnummer" runat="server" Width="100px"></asp:TextBox></p>
        <p>
            <asp:Button ID="Button1" runat="server" OnClick="laggtill" Text="Lägg till" /></p>
    
    </div>
    </form>
</body>
</html>
Medlem sedan okt. 200720 inlägg
#12

Löste det, fick ändra till:

strQuery = "INSERT INTO tbl_users(Fornamn,Efternamn,Tfnnummer) VALUES (?, ?, ?)"
       
myCommand.Parameters.AddWithValue("?", txtFornamn.Text)
myCommand.Parameters.AddWithValue("?", txtEfternamn.Text)
myCommand.Parameters.AddWithValue("?", txtTfnnummer.Text)
135 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)