Jag använder Visuel Studio 7, och har lagt dit SQL-dataadapter och sqlconnection och kod är skapad av Visuel studio, hur gör jag för att lägga till Data till SQL ?, något är fel, eller måste jag skriva databaskopplingen och insert till SQL manuellt ? Per, Nu har jag kortat ned koden och har bara tagit med det som är till SqlInsertCommand1, Var i din sida har du egentligen lagt allt det där? Det ser ut som att du försökt lägga det i InitializeComponent och där ska du inte vara och peta överhuvudtaget. Patrik, Hej, min namne. Jag skrev följande kod, jag öppnade även en databasconnetion då denna inte var öppen, Om du skrev den koden så skrev du den alltså i Page_Init och det ska du inte göra. Du ska skriva den i Page_Load. Se mitt inlägg ovan. Per, felet är fortfarande kvar Per, Kod som skapas av Visuel studio får jag helt enkelt inte att fungera,Insert data till SQL
Det som jag inte jag inte får att fungerar är kopplingen från htmlkod och till sub-rutinen för insert i SQL
jag använder asp:textbox och asp:button och forms, och allt är skapat visuelt,
Kod från Visuell Studio
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Sub InitializeComponent()
Me.SqlDataAdapter1 = New System.Data.SqlClient.SqlDataAdapter
Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection
Me.SqlInsertCommand1 = New System.Data.SqlClient.SqlCommand
CType(Me.DataSetpersonal1, System.ComponentModel.ISupportInitialize).BeginInit()
'
'SqlDataAdapter1
'
Me.SqlDataAdapter1.InsertCommand = Me.SqlInsertCommand1
Me.SqlDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "odrutdelare",
New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("idutdelare", "idutdelare"), New System.Data.Common.DataColumnMapping("namn", "namn"),
New System.Data.Common.DataColumnMapping("adress", "adress"),
Me.SqlConnection1.ConnectionString = "pubstring"
'SqlInsertCommand1
'
Me.SqlInsertCommand1.CommandText = "[odrpersonalInsertCommand]"
Me.SqlInsertCommand1.CommandType = System.Data.CommandType.StoredProcedure
Me.SqlInsertCommand1.Connection = Me.SqlConnection1
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@namn", System.Data.SqlDbType.VarChar, 50, "namn"))
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@adress", System.Data.SqlDbType.VarChar, 50, "adress"))
End Sub
Protected WithEvents SqlDataAdapter1 As System.Data.SqlClient.SqlDataAdapter
Protected WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
Protected WithEvents SqlInsertCommand1 As System.Data.SqlClient.SqlCommand
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents namn As System.Web.UI.WebControls.TextBox
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
och sedan HTML-kod, någonstans här är det fel;
det är kopplingen till SqlInsertCommand1 från html-kod som inte fungerar,
jag skickar väl fel kommandon till SqlInsertCommand1 (sub page_init)
<HTML>
<body>
<form id="Form1" onsubmit="SqlInsertCommand1" method="post" runat="server">
<asp:TextBox id="namn" runat="server"></asp:TextBox>
<asp:Button id="Button1" OnClick="page_init"
OnCommand="ME.SqlInsertCommand1"
runat="server" Text='Skicka'
CommandArgument="SqlInsertCommand1"
CommandName="SqlInsertCommand1"></asp:Button>
</body>
</HTML>Sv: Insert data till SQL
Jag tror inte det finns någon som orkar läsa igenom hela din kod, men ta gärna en titt på http://samples.gotdotnet.com/quickstart/winforms/doc/DataAccessPlaceHolder.aspx för genomgång hur databasarbete fungerar från .NET
//AndreasSv: Insert data till SQL
Men det är kopplingen till SqlInsertCommand1 från html-kod som inte fungerar,
jag skickar väl fel kommandon till SqlInsertCommand1 (sub page_init)Sv: Insert data till SQL
När du skapar en .aspx sida i VS.NET så har du en region som heter "Web Form Designer Generated Code". Där ska du aldrig röra nånting.
Du ska lägga kod i Page_Load och om du ska skapa funktioner för att hantere events i din sida så lägger du dessa efter Page_Load.
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Insert data till SQL
Han har drag&droppat komponenterna på sin WebForm, då hamnar det under InitializeComponent.
//AndreasSv: Insert data till SQL
Kan det vara så enkelt att du missat följande:
SqlInsertCommand1.ExecuteNonQuery()
/PKSv: Insert data till SQL
men vad är det som är fel,
Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
SqlConnection1.Open()
SqlInsertCommand1.ExecuteNonQuery()
SqlConnection1.Close()
End Sub
felmedelande; System.Data.SqlClient.SqlException: Prepared statement '(@namn varchar(50),@adress varchar(50),@postnr varchar(50),@ort ' expects parameter @namn, which was not supplied.
Jag kommer nu att skriva koden för hand, men jag ville att det skulle fungera visuelt via VS7
(dra och droppa SQL-dataapater, det var inte så lätt)Sv: Insert data till SQL
Själva felet består i att du kör ett dbanrop med en massa parametrar utan att skicka med parametrarna.
Att göra saker visuellt i VS snabbar upp arbetet men jag tycker att det är viktigt att man lär sig grunderna först så man förstår vad det är programmet gör åt dig.
Med andra ord, bra idé att göra det för hand.
/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nuSv: Insert data till SQL
Löste ditt problem sig eller behöver du mer hjälp? Om du är klar med detta problemet så markera inlägget som antingen <b>löst</b> (om du hittat en lösning - skriva gärna vad den var så andra kan ta del av både fråga och svar) eller <b>stängd</b> (om du inte hittat en lösning men problemet inte är aktuellt längre).
Om du inte löst problemet och vill ha mer hjälp så skriv ett inlägg som beskriver var du står idag med problemet (vad du har provat etc) så skall vi se om vi inte kan hitta en lösning.
//AndreasSv: Insert data till SQL
jag får felmedelandet (hela tiden),
felmedelande; System.Data.SqlClient.SqlException: Prepared statement '(@namn varchar(50),@adress varchar(50),@postnr varchar(50),@ort ' expects parameter @namn, which was not supplied. Sv: Insert data till SQL
Ahh! Felet är att det stored procedure som du skall anropa försväntar sig att du skickar in två parametrar medans du bara skickar med två vid ditt anrop
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@namn", System.Data.SqlDbType.VarChar, 50, "namn"))
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@adress", System.Data.SqlDbType.VarChar, 50, "adress"))
Du får skicka med de andra två parametrarna med.
//Andreas
Sv: Insert data till SQL
det som jag inte får att fungera när jag skapar allt visuelt, hur får jag över datan till SqlInsertCommand1 och att den skrivs ned, koden ska väl inte behövas ändras när den skapas av visusel studio
Men det fungerar när jag skriver koden manuellt;
Här all kod först koden sedan html-kod
(nu med bara en asp:text box och en skicka kapp och en datagrid),
det är bara det "jag hittar inte felet"
-------------------------------------------------------------------------------------------------------
Public Class testsqlinsert
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Dim configurationAppSettings As System.Configuration.AppSettingsReader = New System.Configuration.AppSettingsReader
Me.SqlDataAdapter1 = New System.Data.SqlClient.SqlDataAdapter
Me.SqlDeleteCommand1 = New System.Data.SqlClient.SqlCommand
Me.SqlConnection1 = New System.Data.SqlClient.SqlConnection
Me.SqlInsertCommand1 = New System.Data.SqlClient.SqlCommand
Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand
Me.SqlUpdateCommand1 = New System.Data.SqlClient.SqlCommand
Me.DataSettest1 = New redline_vs.DataSettest
CType(Me.DataSettest1, System.ComponentModel.ISupportInitialize).BeginInit()
'
'SqlDataAdapter1
'
Me.SqlDataAdapter1.AcceptChangesDuringFill = CType(configurationAppSettings.GetValue("SqlDataAdapter1.AcceptChangesDuringFill", GetType(System.Boolean)), Boolean)
Me.SqlDataAdapter1.ContinueUpdateOnError = CType(configurationAppSettings.GetValue("SqlDataAdapter1.ContinueUpdateOnError", GetType(System.Boolean)), Boolean)
Me.SqlDataAdapter1.DeleteCommand = Me.SqlDeleteCommand1
Me.SqlDataAdapter1.InsertCommand = Me.SqlInsertCommand1
Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1
Me.SqlDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "test", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("test", "test"), New System.Data.Common.DataColumnMapping("idtest", "idtest")})})
Me.SqlDataAdapter1.UpdateCommand = Me.SqlUpdateCommand1
'
'SqlDeleteCommand1
'
Me.SqlDeleteCommand1.CommandText = "DELETE FROM dbo.test WHERE (idtest = @Original_idtest) AND (test = @Original_test" & _
" OR @Original_test IS NULL AND test IS NULL)"
Me.SqlDeleteCommand1.Connection = Me.SqlConnection1
Me.SqlDeleteCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_idtest", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "idtest", System.Data.DataRowVersion.Original, Nothing))
Me.SqlDeleteCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_test", System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "test", System.Data.DataRowVersion.Original, Nothing))
'
'SqlConnection1
'
Me.SqlConnection1.ConnectionString = "pubstring"
'
'SqlInsertCommand1
'
Me.SqlInsertCommand1.CommandText = CType(configurationAppSettings.GetValue("MM_CONNECTION_STRING_redlineice", GetType(System.String)), String)
Me.SqlInsertCommand1.Connection = Me.SqlConnection1
Me.SqlInsertCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@test", System.Data.SqlDbType.VarChar, 10, "test"))
'
'SqlSelectCommand1
'
Me.SqlSelectCommand1.CommandText = "SELECT test, idtest FROM dbo.test"
Me.SqlSelectCommand1.Connection = Me.SqlConnection1
'
'SqlUpdateCommand1
'
Me.SqlUpdateCommand1.CommandText = "UPDATE dbo.test SET test = @test WHERE (idtest = @Original_idtest) AND (test = @O" & _
"riginal_test OR @Original_test IS NULL AND test IS NULL); SELECT test, idtest FR" & _
"OM dbo.test WHERE (idtest = @idtest)"
Me.SqlUpdateCommand1.Connection = Me.SqlConnection1
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@test", System.Data.SqlDbType.VarChar, 10, "test"))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_idtest", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "idtest", System.Data.DataRowVersion.Original, Nothing))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_test", System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "test", System.Data.DataRowVersion.Original, Nothing))
Me.SqlUpdateCommand1.Parameters.Add(New System.Data.SqlClient.SqlParameter("@idtest", System.Data.SqlDbType.Int, 4, "idtest"))
'
'DataSettest1
'
Me.DataSettest1.DataSetName = "DataSettest"
Me.DataSettest1.Locale = New System.Globalization.CultureInfo("sv-SE")
CType(Me.DataSettest1, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents SqlDataAdapter1 As System.Data.SqlClient.SqlDataAdapter
Protected WithEvents SqlConnection1 As System.Data.SqlClient.SqlConnection
Protected WithEvents SqlSelectCommand1 As System.Data.SqlClient.SqlCommand
Protected WithEvents SqlInsertCommand1 As System.Data.SqlClient.SqlCommand
Protected WithEvents SqlUpdateCommand1 As System.Data.SqlClient.SqlCommand
Protected WithEvents SqlDeleteCommand1 As System.Data.SqlClient.SqlCommand
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents DataSettest1 As redline_vs.DataSettest
Protected WithEvents test As System.Web.UI.WebControls.TextBox
Protected WithEvents Message As System.Web.UI.HtmlControls.HtmlGenericControl
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
SqlDataAdapter1.Fill(DataSettest1)
DataGrid1.DataBind()
InitializeComponent()
End Sub
Private Sub SqlConnection1_InfoMessage(ByVal sender As System.Object, ByVal e As System.Data.SqlClient.SqlInfoMessageEventArgs) Handles SqlConnection1.InfoMessage
End Sub
Sub submit(ByVal sender As Object, ByVal e As EventArgs)
InitializeComponent()
SqlConnection1.Open()
SqlInsertCommand1.ExecuteNonQuery()
SqlConnection1.Close()
End Sub
End Class
-------------------------------------------------------------------------------------------------------
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="testsqlinsert.aspx.vb" Inherits="redline_vs.testsqlinsert"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>test</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="test" style="Z-INDEX: 101; LEFT: 272px; POSITION: absolute; TOP: 208px" runat="server"></asp:TextBox>
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 288px; POSITION: absolute; TOP: 248px"
runat="server" Text="skicka" CommandArgument='<%# DataBinder.Eval(SqlDataAdapter1, "InsertCommand") %>' CommandName="page_init">
</asp:Button>
<asp:DataGrid id=DataGrid1 style="Z-INDEX: 103; LEFT: 112px; POSITION: absolute; TOP: 32px" runat="server" DataSource="<%# DataSettest1 %>" DataKeyField="idtest" DataMember="test" BorderColor="White" BorderStyle="Ridge" CellSpacing="1" BorderWidth="2px" BackColor="White" CellPadding="3" GridLines="None">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#9471DE"></SelectedItemStyle>
<ItemStyle ForeColor="Black" BackColor="#DEDFDE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="#E7E7FF" BackColor="#4A3C8C"></HeaderStyle>
<FooterStyle ForeColor="Black" BackColor="#C6C3C6"></FooterStyle>
<PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#C6C3C6"></PagerStyle>
</asp:DataGrid></SPAN>
</form>
</body>
</HTML>