Когда я учился программировать изначально, мне сказали, что существует 3 возможных результата; произошла ошибка, это сработало, или ничего не произошло.Использование встроенной хранимой процедуры с SQL Server
У меня есть последняя проблема на данный момент, и для меня нет сообщения об ошибке.
Вот окна формы:
Код для кнопок выглядит следующим образом.
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();
}
}
}
Схема для базы данных выглядит следующим образом
CREATE TABLE [dbo].[Names]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[FirstName] NCHAR (10) NULL,
[LastName] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
И хранимая процедура выглядит следующим образом
CREATE PROCEDURE usp_BasqueNames_Insert
@First NCHAR(10),
@Last NCHAR(10)
AS
INSERT INTO Names(FirstName, LastName)
VALUES (@First, @Last)
RETURN @@identity
Одна вещь, которая кажется мне странным является то, что, когда я начинаю отлаживать приложение, имя базы данных в проводнике сервера сразу же содержит красный x.
Красный x может быть ошибкой, которую вы должны указать. Наведите указатель мыши на него и посмотрите, появится ли всплывающее окно, чтобы дать вам более подробную информацию. – Theo
Совет: '@@ IDENTITY' может возвращать неожиданные результаты, если присутствуют триггеры. «SCOPE_IDENTITY» - лучший выбор. (И узнайте о предложении 'OUTPUT' для более поздних версий.) – HABO
Вы уверены, что при нажатии кнопки выполняется метод btnSave_Click? –