0

Asp.net でデータ入力ページを作成しています。入力は今のところ問題なく、必要な機能はすべて揃っていますが、データが入力されたことを確認したいと思います。

最初は、クエリが成功したときにメッセージボックスを表示するために少しのjavascriptを使用していましたが、これがありました。入力されたデータがデータベースにまだ存在しない場合にのみ、クエリの挿入を変更するまで、それはうまくいきました。

データ入力用の Asp メソッドは次のとおりです。

    private void ExecuteInsert(string name, string type)
{
    //Creates a new connection using the HWM string
    using (SqlConnection HWM = new SqlConnection(GetConnectionStringHWM()))
    {
        //Creates a sql string with parameters
        string sql = " IF NOT EXISTS "
                 + " ( SELECT  1 "
                 + " FROM tblSoftwareTitles "
                 + " WHERE Softwarename = @SoftwareName "
                 + " AND SoftwareSystemType = @Softwaretype "
                 + " ) "
                 + " BEGIN "
                 + " INSERT tblSoftwareTitles (SoftwareName, SoftwareSystemType) "
                 + " VALUES (@SoftwareName, @SoftwareType) "
                 + " END; ";

        //Opns the connection
        HWM.Open();
        try
        {
            //Creates a Sql command
            using (SqlCommand addSoftware = new SqlCommand{
                CommandType = CommandType.Text,
                Connection = HWM,
                CommandTimeout = 300,
                CommandText = sql})
            {
                //adds parameters to the Sql command
                addSoftware.Parameters.Add("@SoftwareName", SqlDbType.NVarChar, 200).Value = name;
                addSoftware.Parameters.Add("@SoftwareType", SqlDbType.Int).Value = type;
                //Executes the Sql
                addSoftware.ExecuteNonQuery();
            }

        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Insert Error:";
            msg += ex.Message;
            throw new Exception(msg);
        }

    }
}

そしてJavaScript呼び出し

 Alert.Show("Software instance saved!");

これは別のファイルに移動するだけです。

最初は、メッセージ ボックス スクリプトを try ステートメントの最後に配置しました。データが完全に一意で保存されている場合、または一意ではなく入力されていない場合にメッセージ ボックスを表示できるサーバーからの休息を取得するのに助けが必要です。

サーバーがレコードを追加し、保存されたメッセージボックスを表示するかどうかを示すifステートメントが本質的に必要です。それ以外の場合、データが既に存在することを示すメッセージボックスを表示します。

これを達成する方法はありますか?

4

1 に答える 1

0

わかりましたので、いくつかの調査を行い、最初は、まったく返されないexecuteScalar();と思っていた値を返すことができるため、使用の可能性を追跡しました。executeNonQuery();私は間違っていたようで、実際には影響を受けた行の数を返します。これを見つけたら、必要なことを行うためにコードを変更する単純なケースでした。ここに作業コードがあります!

    private void ExecuteInsert(string name, string type)
{
    int rows = 0;
    //Creates a new connection using the HWM string
    using (SqlConnection HWM = new SqlConnection(GetConnectionStringHWM()))
    {
        //Creates a sql string with parameters
        string sql = " IF NOT EXISTS "
                 + " ( SELECT  1 "
                 + " FROM tblSoftwareTitles "
                 + " WHERE Softwarename = @SoftwareName "
                 + " AND SoftwareSystemType = @Softwaretype "
                 + " ) "
                 + " BEGIN "
                 + " INSERT tblSoftwareTitles (SoftwareName, SoftwareSystemType) "
                 + " VALUES (@SoftwareName, @SoftwareType); "
                 + " END ; ";

        //Opns the connection
        HWM.Open();
        try
        {
            //Creates a Sql command
            using (SqlCommand addSoftware = new SqlCommand{
                CommandType = CommandType.Text,
                Connection = HWM,
                CommandTimeout = 300,
                CommandText = sql})
            {
                //adds parameters to the Sql command
                addSoftware.Parameters.Add("@SoftwareName", SqlDbType.NVarChar, 200).Value = name;
                addSoftware.Parameters.Add("@SoftwareType", SqlDbType.Int).Value = type;
                //Executes the Sql

                try
                {
                    rows = addSoftware.ExecuteNonQuery();

                    if (rows >= 1)
                    {
                        Alert.Show("Software Saved");
                    }
                    else
                    {
                        Alert.Show("Software already exists");
                    }
                }
                catch (Exception ex)
                {
                    Alert.Show(ex.Message);
                }
            }

        }
        catch (System.Data.SqlClient.SqlException ex)
        {
            string msg = "Insert Error:";
            msg += ex.Message;
            throw new Exception(msg);
        }

    }
}

そして、あなたはそれを持っています!ソフトウェアの種類とソフトウェア名の組み合わせが既にデータベースに存在する場合は、メッセージ ボックスが表示され、その旨がユーザーに通知されます。名前とタイプの組み合わせが存在しない場合、情報は保存され、挿入が成功したことをユーザーに通知するメッセージ ボックスが表示されます。

于 2013-08-01T15:58:15.653 に答える