0

VS2010 と SqlServer2008-r2 を使用して C# でウィンドウ ベースのアプリケーションを設計しています。私は

サービス ベースのデータベース (.mdf) を使用すると、その中に 4 つのフィールドを持つテーブルがあります。

テーブル内のデータを削除し、アプリケーションを閉じてアプリケーションを再実行すると、データが失われます。

その理由と、それを取り除く方法。

私は保存のために次のルーチンを使用しています

private void Save(object sender, EventArgs e)
        {
            Program.connection.Close();

            bool k = srchpreventry();

            try
            {
                if (k)
                {

                 string query = " update orderform set Enrolment_Expected = " + textBox2.Text + ", Stock_on_Hand=" + textBox3.Text + ", Number_Required = "+ textBox4.Text + " where Name = '" + textBox1.Text + "';";
               SqlCommand cmd = new SqlCommand(query, Program.connection);

                cmd.ExecuteNonQuery();

                Program.connection.Close();
            }


            else
            {
               // Program.connection.Open();

                string query = "insert into orderform(Name,Enrolment_Expected,Stock_on_Hand,Number_Required) values('" + textBox1.Text + "', '" + textBox2.Text + "', ' " + textBox3.Text + "',' " + textBox4.Text + "')";

                SqlCommand cmd = new SqlCommand(query, Program.connection);

                cmd.ExecuteNonQuery();

                Program.connection.Close();
            }

        }

        catch (Exception ae)
        {
            string str = ae.ToString();
            MessageBox.Show(str);
        }

        finally
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox1.Enabled = false;
            textBox2.Enabled = false;
            textBox3.Enabled = false;
            textBox4.Enabled = false;
            Program.connection.Close();
        }

    }    



public bool srchpreventry()
        {

            Program.connection.Open();

            string query = " Select name from orderform where Name = '" + textBox1.Text + "';";

            SqlCommand cmd = new SqlCommand(query, Program.connection);

            SqlDataReader dtr = cmd.ExecuteReader();

            if (dtr.Read() == true)
            {
                dtr.Close();
                return true;
            }
            else
            {
                dtr.Close();
                return false;
            }
        }



private void textBox1_TextChanged(object sender, EventArgs e)
        {
            Program.connection.Close();
            Program.connection.Open();



            string query = " Select * from orderform where Name = '"  + textBox1.Text + "';";

            SqlCommand cmd = new SqlCommand(query, Program.connection);

            SqlDataReader dtr = cmd.ExecuteReader();

            if (dtr.Read() == true)
            {
                textBox2.Text = dtr[1].ToString();
                textBox3.Text = dtr[2].ToString();//GetString(2);
               textBox4.Text = dtr[3].ToString();
            }

            else
            {
                textBox2.Text = "";
                textBox3.Text = "";
                textBox4.Text = "";

            }


        }



public static  SqlConnection connection = null;
       static string appath = Library_Records.Program.app_path;

string connectionstring = string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;User Instance=True", appath);

static string dbfiles = null;
        internal static string app_path
        {
            get { return dbfiles = "|Datadirectory|\\records.mdf"; }
        }


/*******************datagrid code********************/
Program.connection.Open();
                    string query = "select * from orderform";
                    SqlDataAdapter MyDA = new SqlDataAdapter();
                    MyDA.SelectCommand = new SqlCommand(query, Program.connection);
                    DataTable table = new DataTable();
                    MyDA.Fill(table);

                    BindingSource bSource = new BindingSource();
                    bSource.DataSource = table;

                    dataGridView1.DataSource = bSource;
4

3 に答える 3

0

nvarchar(max) のように、列で許可されている文字を増やすことができるかどうかを確認してください。現在は nvarchar(200) になっている可能性があります。これは単なる例です。

于 2012-06-27T10:29:47.283 に答える
0

ビジュアルスタジオで?

デバッグを開始するたびに、VIsual Studio に同じ空のデータベースを再度ロードさせる必要はありませんか?

アプリケーションを閉じて、アプリケーションを再実行すると、データが失われます。

誰かが挿入時にスローされるエラーを無視するか、トランザクションをコミットしないか、tvisal スタジオが起動するたびに同じ rdatabase テンプレートをディレクトリに占有します。

于 2012-06-27T10:45:09.450 に答える
-2

ストアド プロシージャを (コード内またはデータベース内で) 使用し始めることを強くお勧めしますが、それ以外に.. トランザクションなどを開始しませんか? または、Program.Connection クラスのコードを質問に投稿してください。

于 2012-06-27T10:47:29.030 に答える