0

私はC#が初めてで、それについて詳しくは知りませんが、やらなければならないタスクがあります。

アイデアは新しい従業員を追加することであり、ユーザーが追加ボタンをクリックすると、名前がデータベースの従業員テーブルに存在するかどうかを確認する必要があるため、名前が存在する場合はテーブルに追加されず、存在しない場合はテーブルに追加されます.

誰でも私を助けてください:(

これは、ページのデザインがこの写真のようになるものです:

ここに画像の説明を入力

私はストアドプロシージャでチェックを行いましたが、それが正しいかどうか、またエラーがあるかどうかわかりません:

@F_name nvarchar(50),
@isExists bit output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here

 set @isExists = 0
if exists (SELECT F_name FROM Employee WHERE F_name =@F_name)
begin
       set @isExists=1
END
GO 

エラーは次のとおりです。

メッセージ 102、レベル 15、状態 1、手順 CheckRecord、行 22 'END' 付近の構文が正しくありません。

4

5 に答える 5

2

コードビハインドでこのチェックを使用することをお勧めします。LINQ で簡単に実行できます。

using(DataContext db = new DataContext())
{
    var name = db.Employee.Where(n => n.F_name == YourNameFromTextBox).FistOrDefault();
    if(name == null)
    {
        // insert data
    }
    else
    {
        // record exist - throw error
    }
}

LINQ を使用したくない場合は、ADO.NET を使用して DB から読み取り/書き込み/更新を行います。

SqlConnection dbConnection;
dbConnection = new SqlConnection(connectionString);

SqlCommand myCommand = new SqlCommand("SELECT * FROM Employee WHERE F_name=@F_name", dbConnection);
SqlParameter sqlParam = new SqlParameter("@F_name", F_name);
myCommand.Parameters.Add(sqlParam);

myCommand.Connection.Open();
SqlDataReader myReader = myCommand.ExecuteReader();

string name = "";

if (myReader.Read())
{
    name = myReader.GetString("F_name");
    // now you get 'name' from DB here, do your job
}
myReader.Close();
myCommand.Connection.Close();
于 2013-03-12T10:42:58.830 に答える
0

ENDすべてのBEGINステートメントにはステートメントが必要なため、 1 つのステートメントが欠落していENDます。

それはそのようになります:

@F_name nvarchar(50),
@isExists bit output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here

    set @isExists = 0
    if exists (SELECT F_name FROM Employee WHERE F_name =@F_name)
    begin
       set @isExists=1
    END
END
GO 
于 2013-03-12T10:40:33.970 に答える
0

これは、ストアド プロシージャを記述する方法です。私が言う多くの方法の1つ。

CREATE PROCEDURE proc_yourProcName
    @F_name nvarchar(50) 
AS
BEGIN
    IF NOT EXISTS(SELECT F_name FROM Employee WHERE F_name = @F_name)
        BEGIN
          -- Your INSERT statement here
        END
    ELSE
        BEGIN
         -- Your UPDATE statement here
        END
END

したがって、F_Name があれば、それはありませんINSERT。必要に応じて、ステートメントにUPDATEロジックを設定できます。ELSE

于 2013-03-12T10:52:14.600 に答える
0

フィールド Employeename で重複を受け入れないようにデータベースを強制することができます

またはコードを使用してください

try
con.open
cmd.commandtext="select * from T1 where name = '" & varablename &"'"
reader=cmd.excutereader
if reader.read
msgbox"the emp. is alrady founded in the database"
exit sub
else
' do the insertion
end if
catch ex as exception
msgbox ex.massege
end try
于 2013-03-12T10:43:09.223 に答える
0

これを試してください。最後にENDステートメントをもう1つ追加しました

@F_name nvarchar(50),
@isExists bit output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here

 set @isExists = 0
if exists (SELECT F_name FROM Employee WHERE F_name =@F_name)
  begin
       set @isExists=1
  END

END

GO 
于 2013-03-12T10:39:49.097 に答える