1.SQLCEの使用
SqlCE の使用と通常の SQL 領域は大きくありませんが、包含されていません。
SQLCE3.5の使用例
パブリッククラスDB
{
public static void WriteLocation(Gps gps)
{
string appPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase.ToString());
string dbcStr = @"データ ソース =" + appPath.Replace(@" \",@" ") + @"Mc.sdf";
SqlCeConnection sqlCon = 新しい SqlCeConnection(dbcStr);
SqlCeCommand sqlCmd = new SqlCeCommand(" ", sqlCon);
sqlCon.Open();
SqlCeTransaction sqltran = sqlCon.BeginTransaction();
sqlCmd.Transaction = sqltran;
試す
{
sqlCmd.CommandText = "Location_t (Lc_Dt、Lc_Longitude、Lc_Latitude、Lc_Speed、Lc_Direction) の値に挿入 (@Lc_Dt、@Lc_Longitude、@Lc_Latitude、@Lc_Speed、@Lc_Direction)";
sqlCmd.Parameters.Add("Lc_Dt", SqlDbType.DateTime).Value = gps.Datetime;
sqlCmd.Parameters.Add("Lc_Longitude", SqlDbType.Decimal).Value = gps.DLong;
sqlCmd.Parameters.Add("Lc_Latitude", SqlDbType.Decimal).Value = gps.DLat;
sqlCmd.Parameters.Add("Lc_Speed", SqlDbType.Decimal).Value = gps.DSpeed;
sqlCmd.Parameters.Add("Lc_Direction", SqlDbType.Decimal).Value = gps.DDirection;
sqlCmd.ExecuteNonQuery();
sqltran.Commit();
}
catch (例外例)
{
sqltran.Rollback();
}
ついに
{
sqlCon.Close();
}
}
}
まず、SQLCE では System.Data.SqlServerCe を使用する必要があり、関連するクラスは Sql の使用と通常の Sql の使用に関係なく SqlCe に変更されることに注意してください。
2.接続文字列
ここで、ConnectionString でポイント機能を実行し、最初は反対でしたが、VS2008 では、使用されているパスは .xxx.sdf ですが、ターゲット マシンではそのパスが使用できないことがわかります。
string dbcStr = @"Data Source =" + appPath.Replace(@" \",@" ") + @" Mc.sdf"の句; まさにこれです。
@"Mc.sdf" は、データベースの内容が変更されていないことを示しているため、このように書き込むと便利です。実行ファイルの経路に関して、
自分の状況に応じて修正する必要があります。
3.小さな問題の解決策
最初に問題となるのは、上記の SQL 文でデータ フィールドを書き込むときに、式の評価でオーバーフローが発生することです。 [ 関数の名前 (既知の場合) = ]。
その後、検索の結果、sp2 beta2 を実行する必要があることがわかり、その結果、データ型の問題が解決され、上のプログラムで対応する小数点のフィールドの長さと精度が追加されました。 、
したがって、この例外は、データ タイプが一致しないという問題であると考えられます。
著者:大米猫咪来回变