Als ich lernte, ursprünglich zu programmieren, wurde mir gesagt, dass es 3 mögliche Ergebnisse gab; Es gab einen Fehler, es funktionierte oder es passierte nichts.Verwenden von INSERT Prozedur mit SQL Server
Ich habe die letzte das Problem im Moment und es gibt keine Fehlermeldung für mich zu übermitteln. Hier
ist das Fenster Form:
Der Code für die Schaltflächen ist wie folgt.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
namespace Basque
{
public partial class Form1 : Form
{
private String strFirstName;
private String strLastName;
public Form1()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
strFirstName = txtFirstName.Text;
strLastName = txtLastName.Text;
int tempNo;
AddNames(strFirstName, strLastName);
txtFirstName.Clear();
txtLastName.Clear();
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
this.Dispose();
}
public void AddNames(String strFirstName, String strLastName)
{
String connString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\BasqueNames.mdf;Integrated Security=True";
SqlConnection oCON = new SqlConnection(connString);
oCON.Open();
SqlCommand oCMD = new SqlCommand();
oCMD.Connection = oCON;
oCMD.CommandType = CommandType.StoredProcedure;
oCMD.CommandText = "usp_BasqueNames_Insert";
oCMD.Parameters.AddWithValue("@First", strFirstName);
oCMD.Parameters.AddWithValue("@Last", strLastName);
oCMD.ExecuteNonQuery();
oCON.Close();
}
}
}
Das Schema für die Datenbank ist als
CREATE TABLE [dbo].[Names]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NCHAR (10) NULL,
[LastName] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Und die gespeicherte Prozedur folgt, wird wie folgt
CREATE PROCEDURE usp_BasqueNames_Insert
@First NCHAR(10),
@Last NCHAR(10)
AS
INSERT INTO Names(FirstName, LastName)
VALUES (@First, @Last)
RETURN @@identity
Eine Sache, die mir seltsam auffällt, ist, dass, wenn ich zum Debuggen starten die App, der Datenbankname im Server-Explorer hat sofort ein rotes X drauf.
Das rote x könnte ein Fehler sein, den Sie ansprechen müssen. Bewegen Sie den Mauszeiger darüber und sehen Sie, ob ein Popup-Fenster mit weiteren Details angezeigt wird. – Theo
Tipp: '@@ IDENTITY' kann überraschende Ergebnisse liefern, wenn Trigger vorhanden sind. 'SCOPE_IDENTITY' ist eine bessere Wahl. (Und lernen Sie später die Klausel OUTPUT kennen.) – HABO
Sind Sie sicher, dass die Methode btnSave_Click ausgeführt wird, wenn auf die Schaltfläche geklickt wird? –