挿入と選択のための 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で説明したように.