0

Visual Studio 2008 を使用して C# で Windows Mobile 6.5 アプリケーションを開発しています。これは SQL Server CE データベースに接続されています。

このコードを使用して行を挿入しました。各列の値は textBox 文字列に関連しています。

namespace GesTPL
{
    public partial class Form4 : Form
    {
        public Form4()
        {
           InitializeComponent();
        }

        public Form RefToForm1 { get; set; }

        static String pathDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
        static String pathDB = System.IO.Path.Combine(pathDir, "releve.sdf");
        static String connectionString = string.Format(@"DataSource={0}", pathDB);
        SqlCeConnection connection = new SqlCeConnection(connectionString);

        private void Form4_Load(object sender, EventArgs e)
        {
            connection.Open();
        }

        private void button_Fermer_Click_1(object sender, EventArgs e)
        {
            this.RefToForm1.Show();
            this.Close();
        }

        private void button_OK_Click_1(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox5.Text == "")
            {
                MessageBox.Show("Fill in all the information first!");
            }
            else
            {
                SqlCeCommand cmd = new SqlCeCommand("INSERT INTO compteur(numeroCompteur, idGeographique, abonne, police) VALUES(@numeroCompteur, @idGeographique, @abonne, @police)", connection);
                cmd.Connection = connection;
                cmd.Parameters.AddWithValue("@numeroCompteur", textBox1.Text);
                cmd.Parameters.AddWithValue("@idGeographique", textBox2.Text);
                cmd.Parameters.AddWithValue("@abonne", textBox3.Text);
                cmd.Parameters.AddWithValue("@police", textBox5.Text);

                try
                {
                    int affectedrows = cmd.ExecuteNonQuery();

                    if (affectedrows > 0)
                    {
                        MessageBox.Show("Data added successfully!");
                    }
                    else
                    {
                        MessageBox.Show("Failed to add data!");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            } 
        }
    }
}

問題は、変更がエミュレーターのデータベースにのみ適用され.sdf、プロジェクトにあるデータベース ファイルには適用されないことです。

4

1 に答える 1

0

releve.sdfプロジェクトでデータベース ファイルを選択し、[プロパティ]セクションに移動してBuild Action = ContentCopy to Output Directory = Copy if newer.

スクリーンショット

これで十分ですが、他にも問題ある場合は、ファイルの場所を再確認してください。

    private void button_OK_Click_1(object sender, EventArgs e)
    {
        MessageBox.Show(pathDB, "Check Path Location!");
        // ... rest of your code
    }
于 2013-08-09T18:22:19.910 に答える