0

挿入と選択のための SQL Server Compact データベース関数があります。

public Exception SetPartyDetails(PartyDetails pd)
{
        query = "Insert into [Party Details] ( [Name],[Address],[Tin No],[Land Line No],[Mobile No]) values (@Name,@Address,@PartyTin,@LandLineNo,@MobileNo)";
        try
        {
            com = new SqlCeCommand(query , con);
            com.Parameters.AddWithValue("@Name",pd.name);
            com.Parameters.AddWithValue("@Address",pd.address);
            com.Parameters.AddWithValue("@PartyTin",pd.tinNo);
            com.Parameters.AddWithValue("@LandLineNo",pd.landLineNo);
            com.Parameters.AddWithValue("@MobileNo",pd.mobileNo);
            con.Open();
            com.ExecuteNonQuery();
            con.Close();
            retrn = null;

        }
        catch(Exception e)
        {
            con.Close();
            retrn = e;
        }
        return retrn;
}

public List<PartyDetails> GetAllPartyDetails()
{
        query = "select * from [Party Details] ";
        try
        {
            List<PartyDetails> pls = new List<PartyDetails>();
            con.Open();
            com = new SqlCeCommand(query, con);

            sdr = com.ExecuteReader();
            while (sdr.Read())
            {
                pd = new PartyDetails();
                pd.name = sdr.GetString(1);
                pd.address = sdr.GetString(2);
                pd.tinNo = sdr.GetString(3);
                pd.mobileNo = sdr.GetString(4);
                pd.landLineNo = sdr.GetString(5);
                pls.Add(pd);
            }
            con.Close();
            return pls;
        }
        catch (Exception)
        {
            con.Close();
            return null;
        }
}

次のコードで上記の関数を呼び出そうとすると

public static void Main()
{
    DataBase db = new DataBase();
    PartyDetails pd = new PartyDetails();
    pd.name = "Chet";
    pd.address = "b-77 ved villa colony ";
    pd.tinNo = "5346";
    pd.mobileNo = "88901505335725";
    pd.landLineNo = "014125353297610";

    Console.WriteLine(db.SetPartyDetails(pd) + " Sucess prd");

List<PartyDetails> pdl = db.GetAllPartyDetails();
Console.WriteLine(pdl.Count);
foreach (PartyDetails ps in pdl)
{
    Console.WriteLine(ps.name);
    Console.WriteLine(ps.address);
    Console.WriteLine(ps.landLineNo);
    Console.WriteLine(ps.mobileNo);
    Console.WriteLine(ps.tinNo);

}
}

上記のコードを実行すると、最初に挿入してから選択すると予想どおりに実行されます。次の出力が得られます。

Output 
Sucess prd
1 
chet
b-77 ved villa colony
88901505335725
5346

しかし、挿入関数のみの選択を呼び出さずに上記のコードを実行すると問題が発生します0。これは、レコードがないことを意味しますが、以前に挿入が行われたことを意味します。上記のコードの何が問題なのかわかりません。

次のように、上記のコードでいくつかのテストを試みました

1.SQLサーバーからデータを挿入すると、管理スタジオの選択機能がうまく機能します.管理スタジオから2つのエントリを挿入し、上記のコードから1つを挿入するとします。選択機能は正しい結果である3つのエントリの出力を提供しますが、これは挿入と選択を同時に呼び出した場合にのみ発生します。セレクション コールのみで、Management studio によって挿入された 2 つのエントリのみが提供されます。

2.挿入コードで2〜3個のエントリを挿入し、両方の関数を同時に呼び出すと、うまく機能し、2〜3個のエントリが出力されます.1回だけエントリが挿入されるため、データベースにデータが挿入されることを意味しますが、どこにあるのか管理スタジオではデータの変更がないため、保存しています。

3.コードによって挿入されたデータは一時的に保存されます。これは、しばらくしてからコードを実行し、両方の関数を同時に呼び出すと、コードによって挿入されたエントリが提供されず、管理スタジオによってのみエントリが提供されるためです...ポイント1で説明したように.

4

0 に答える 0