簡體   English   中英

在SQL Server中使用插入存儲過程

[英]Using insert stored procedure with SQL Server

當我最初學習編程時,被告知有3種可能的結果。 有一個錯誤,它工作,或什么也沒發生。

目前,我遇到的問題是最后一個,沒有錯誤消息可供我提交。

這是windows窗體:

Windows窗體的截圖

按鈕的代碼如下。

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。

你能試試嗎? 並且請確保您嘗試傳遞的值不超過10個字符,因為您的nchar僅為(10);

private void btnSave_Click(object sender, EventArgs e)
        {
            AddNames(txtFirstname.Text, txtLastName.Text);
            txtFirstName.Clear();
            txtLastName.Clear();
        }


        public void AddNames(string strFirstName, string strLastName)
        {
            String connString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\BasqueNames.mdf;Integrated Security=True";

            using(SqlConnection oCON = new SqlConnection(connString))
           {
            SqlCommand oCMD = new SqlCommand("usp_BasqueNames_Insert",oCon);
    oCMD.CommandType = CommandType.StoredProcedure;

            oCMD.Parameters.Add("@First", SqlDbType.Nchar).Value = strFirstName;
            oCMD.Parameters.Add("@Last", SqlDbType.Nchar).Value = strLastName;

            oCMD.ExecuteNonQuery();
            }
        }

感謝所有的建議和支持。

必須更改一件事,我必須安裝並連接到sql express。 我發現Visual Studio數據庫在Visual Studio中無法連接。

    private void btnSave_Click(object sender, EventArgs e)
    {
        AddNames(txtFirstname.Text, txtLastName.Text);
        txtFirstName.Clear();
        txtLastName.Clear();
    }


    public void AddNames(string strFirstName, string strLastName)
    {
        String connString = @"Data Source=ERNIE\SQLEXPRESS;Initial Catalog=LeatherDress;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";


        using(SqlConnection oCON = new SqlConnection(connString))
       {
        SqlCommand oCMD = new SqlCommand("usp_BasqueNames_Insert",oCon);
        oCMD.CommandType = CommandType.StoredProcedure;

        oCMD.Parameters.Add("@First", SqlDbType.Nchar).Value = strFirstName;
        oCMD.Parameters.Add("@Last", SqlDbType.Nchar).Value = strLastName;

        oCON.open();
        oCMD.ExecuteNonQuery();
        oCON.close();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM