数据从数据库中截断

时间:2012-06-27 10:25:04

标签: c# visual-studio-2010 sql-server-2008-r2

我正在使用VS2010和SqlServer2008-r2在C#中设计基于Window的应用程序。我是

使用基于服务的数据库(.mdf),其中有一个包含四个字段的表,如果我存储

表中的数据并关闭应用程序并重新运行数据丢失的应用程序。

为什么如此以及如何摆脱它。

我正在使用以下例程进行保存

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;

3 个答案:

答案 0 :(得分:0)

检查是否可以增加列中允许的字符,例如nvarchar(max)因为现在它可能是nvarchar(200) - 这只是一个例子

答案 1 :(得分:0)

在Visual Studio中?

每次开始调试时,你是不是让VIsual Studio再次加载相同的空数据库?

  

并关闭应用程序并重新运行数据丢失的应用程序。

每个人都会忽略在插入时抛出的错误,不提交事务或者tvisal studio只是在每次启动时将相同的rdatabase模板复制到目录中。

答案 2 :(得分:-1)

我强烈(强调强烈)建议您开始使用存储过程(在代码或数据库中),但除此之外......您不会启动事务或类似的事情? 或者将Program.Connection类代码发布到问题中。