代码列表:使用 SQL Server CE 数据库

以下是执行演练中包含的所有任务的完整 Visual C# 代码。可以在 Microsoft Visual Studio .NET 项目中复制、粘贴并运行这段代码。

using System;
using System.IO;
using System.Text;
using System.Data;
using System.Data.SqlServerCe;
using System.Collections;
using System.Windows.Forms;
using System.Data.Common;

public class WalkThrough 
{
    static void Main() 
    {
        SqlCeConnection conn = null;

        try 
        {
            if (File.Exists ("Test.sdf") )
                File.Delete ("Test.sdf");

            SqlCeEngine engine = new SqlCeEngine ("Data Source = Test.sdf");
            engine.CreateDatabase ();

            conn = new SqlCeConnection ("Data Source = Test.sdf");
            conn.Open();

            SqlCeCommand cmd = conn.CreateCommand ();

            cmd.CommandText = 
                "CREATE TABLE TestTbl (col1 INT PRIMARY KEY, col2 NTEXT, col3 MONEY)";

            cmd.ExecuteNonQuery();

            cmd.CommandText = 
                "INSERT INTO TestTbl (col1, col2, col3) VALUES (0, 'abc', 15.66)";

            cmd.ExecuteNonQuery();

            cmd.CommandText = "INSERT INTO TestTbl (col1, col2, col3) VALUES (?, ?, ?)";

            cmd.Parameters.Add(new SqlCeParameter("p1", SqlDbType.Int));
            cmd.Parameters.Add(new SqlCeParameter("p2", SqlDbType.NText));
            cmd.Parameters.Add(new SqlCeParameter("p3", SqlDbType.Money));

            cmd.Parameters["p2"].Size = 50;

            cmd.Prepare();

            cmd.Parameters["p1"].Value = 1;
            cmd.Parameters["p2"].Value = "abc";
            cmd.Parameters["p3"].Value = 15.66;
            cmd.ExecuteNonQuery();

            cmd.Parameters.Clear();

            cmd.CommandText = "SELECT * FROM TestTbl";
                
            SqlCeDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read()) 
            {
                MessageBox.Show(" col1 = " + rdr.GetInt32(0) + 
                    " col2 = " + rdr.GetString(1) +
                    " col3 = " + rdr.GetSqlMoney(2));
            }

            cmd.CommandText = "UPDATE TestTbl set col2='some new value' WHERE col1=0";
            cmd.ExecuteNonQuery();

            cmd.CommandText = "SELECT * FROM TestTbl";
                
            rdr = cmd.ExecuteReader();

            while (rdr.Read()) 
            {
                MessageBox.Show(" col1 = " + rdr.GetInt32(0) + 
                    " col2 = " + rdr.GetString(1) +
                    " col3 = " + rdr.GetSqlMoney(2));
            }

        }
        catch (SqlCeException e) 
        {
            ShowErrors(e);
        }
        finally 
         {
            if(conn.State == ConnectionState.Open)
               conn.Close();
         }
    }

    public static void ShowErrors(SqlCeException e) 
    {
        SqlCeErrorCollection errorCollection = e.Errors;

        StringBuilder bld = new StringBuilder();

        foreach (SqlCeError err in errorCollection) 
        {
            bld.Append("\n Error Code: " + err.HResult.ToString("X"));
            bld.Append("\n Message   : " + err.Message);
            bld.Append("\n Minor Err.: " + err.NativeError);
            bld.Append("\n Source    : " + err.Source);
                
            foreach (int numPar in err.NumericErrorParameters) 
            {
                if (0 != numPar) bld.Append("\n Num. Par. : " + numPar);
            }
                
            foreach (string errPar in err.ErrorParameters) 
            {
                if (String.Empty != errPar) bld.Append("\n Err. Par. : " + errPar);
            }

            MessageBox.Show(bld.ToString());
            bld.Remove(0, bld.Length);
        }
    }
}

请参见

演练:使用 SQL Server CE 数据库 | SQL Server CE | 智能设备演练