数据不能永久保存在数据库中

时间:2017-12-06 19:55:27

标签: c# sql-server visual-studio-2013

我创建了一个简单的程序,它接受输入然后存储数据库中输入的数据。 我在vs 2013中使用了本地基于ms sql服务的数据库。该程序运行完美并保存 数据库中输入的数据。问题是每当我向表格数据显示我最近的数据时 输入已经消失了。但是当我修改连接并设置数据库文件位置并选择数据库文件时 " \ Visual Studio 2013 \ Projects \ locald \ locald \ bin \ Debug \ dbs.mdf"当我输入新数据时,数据被保存并且 我终于可以在数据库中看到Inputted中的数据了。为什么数据仅在我存储时存储 修改连接并在" \ bin \ Debug"中设置位置夹。数据库文件的默认位置 在" \ Visual Studio 2013 \ Projects \ locald \ locald \ dbs.mdf"这是数据库的defualt目录 不存储我输入的数据。另外,我设置了我的数据库"复制到输出目录" 财产到"复制如果更新"因为它的默认值是" Copy Always"只保存我输入的最新数据 并将第二个覆盖到我输入的最新输入。如何解决此问题并使我的数据库存储数据 永久即使连接只是在数据库的默认位置文件夹?有什么东西吗? 我想念?请帮助谢谢......

以下是我在我的计划中使用的代码:

我的保存按钮的代码:

 private void button1_Click(object sender, EventArgs e)
    {
        string f = textBox1.Text;
        int a = int.Parse(textBox2.Text);
        SqlConnection conn = locald.DB.GetSqlConnection();
        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@fname", SqlDbType.VarChar).Value=f;
        cmd.Parameters.Add("@age", SqlDbType.Int).Value=a;
        cmd.CommandText = @"savetotblinfo";
        try
        {
            cmd.ExecuteNonQuery();
            MessageBox.Show("Data Saved", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            textBox1.Clear();
            textBox2.Clear();
            conn.Close();
        }
        catch(SqlException err)
        {
            MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

我为数据库连接创建的类:

public class DB
{
    public static string ConnectionString
    {
        get
        {
            string connStr = ConfigurationManager.ConnectionStrings["locald.Properties.Settings.localdConnectionString"].ToString();

            SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(connStr);
            sb.ApplicationName = ApplicationName ?? sb.ApplicationName;
            sb.ConnectTimeout = (ConnectionTimeout > 0) ? ConnectionTimeout : sb.ConnectTimeout;

            return sb.ToString();
        }
    }
    public static string ApplicationName { get; set; }
    public static int ConnectionTimeout { get; set; }
    public static SqlConnection GetSqlConnection()
    {
        SqlConnection cnn = new SqlConnection(ConnectionString);
        cnn.Open();
        return cnn;
    }
}

我使用的存储过程:

CREATE PROCEDURE dbo.savetotblinfo
    @fname varchar(300),
    @age int
AS
    SET NOCOUNT ON
INSERT INTO tblinfo
VALUES (@fname,@age)    
RETURN 0

这就是我在设置选项中的项目属性中所做的:

enter image description here

0 个答案:

没有答案