Ich bin nur ein Anfänger versucht, das Tutorial zu folgen. Ich suchte nach den engsten Fragen, probierte mehrere aus. Keiner von ihnen funktioniert für mich. Ich brauche nur ein paar Hinweise, wo es schief geht. Vielen Dank.C# Web-Formular übermittelte Daten konnten nicht SQL-Datenbank einfügen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace Company
{
public partial class ContactUs : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void update(string FirstName, string LastName, string EmailAddress, string MobileNumber, string category, string message)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "INSERT INTO ContactInformation (GUID,FirstName, LastName, EmailAddress, Number, Category, Message) VALUES "
+ " (@GUID,@FirstName,@LastName,@EmailAddress,@Number,@category,@message)";
Guid guid = Guid.NewGuid();
string guidString = guid.ToString();
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter[] p = new SqlParameter[7];
p[0] = new SqlParameter("@GUID", SqlDbType.UniqueIdentifier,50);
p[1] = new SqlParameter("@FirstName", SqlDbType.VarChar,50);
p[2] = new SqlParameter("@LastName", SqlDbType.VarChar,50);
p[3] = new SqlParameter("@EmailAddress", SqlDbType.VarChar,50);
p[4] = new SqlParameter("@Number", SqlDbType.VarChar,50);
p[5] = new SqlParameter("@Category", SqlDbType.VarChar,50);
p[6] = new SqlParameter("@Message", SqlDbType.VarChar,50);
p[0].Value = guid;
p[1].Value = FirstName;
p[2].Value = LastName;
p[3].Value = EmailAddress;
p[4].Value = MobileNumber;
p[5].Value = category;
p[6].Value = message;
for (int i = 0; i < p.Length; i++)
{
cmd.Parameters.Add(p[i]);
}
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
public string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["ContactInformation"].ConnectionString;
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (!IsPostBack)
{
Validate();
update(txtFirstName.Text,
txtLastName.Text,
txtEmail.Text,
txtNumber.Text,
DropDownList1.SelectedItem.Text,
txtMessage.Text);
Response.Write("Record was successfully added!");
//ClearForm(Page);
}
}
public static void ClearForm(Control Parent)
{
if (Parent is TextBox)
{ (Parent as TextBox).Text = string.Empty; }
else
{
foreach (Control c in Parent.Controls)
ClearForm(c);
}
}
}
}
Die Verbindungszeichenfolge befindet sich in der Datei web.config.
<connectionStrings>
<add name="ContactInformation" connectionString="datasource=database;initial catalog=ContactInformation;Integrated Security=SSPI;userid=xxx;password=xxx;"/>
</connectionStrings>
ich die Website auf meinem lokalen Rechner eingesetzt und versuchen, es auf der anderen Seite auf Internet Explorer.And zu testen, ich öffne die Datenbank-Management-Tools, ist die Tabelle noch leer.
Hallo @MethodMan Tut mir leid, ich bin nicht vertraut mit dem Posten. Ich habe gerade meinen Code bearbeitet. Ich erhalte keine Fehler für den Code. Ich konnte einfach keine Daten in die Datenbank einfügen. – GoResistanceLi
Haben Sie versucht, Ihren Code Zeile für Zeile mit dem Debugger zu durchlaufen? Hat es dem Pfad durch den Code gefolgt, den Sie erwartet haben? – mason
Ich denke, dass Sie schauen sollten, wie man Parameter auch dann richtig erstellt, wenn Sie den Code durchgehen, den Sie auswerten sollten und alle Parameterwerte. Setze auch einen Haltepunkt in diese Zeile und sieh nach, ob er auf diese Zeile trifft. string msg = "Insert Error:"; 1' solltest du auch deine Sql-Objekte um ein 'using() {}' wickeln, das du nicht entsorgst erstellte Objekte – MethodMan