C#连接SQL数据库成功,修改后,再打开数据库有还原了
修改的就等于没有修改一样就是我插入了一部分数据,删除了一部分数据,这些操作似乎就保存在我的windows程序运行的时候,重启程序就又都还原了
求帮助谢谢  谢谢  谢谢

解决方案 »

  1.   

    数据库在工程下,变成是编译内容,属性是copyalways,这样每次F5就刷掉了。
      

  2.   

    是不是有个submitChanges()这个东西要使用啊?可是我不知道怎么弄这个?
      

  3.   


    厄,没有调用吗?你用的是linq2Sql还是linq2EF?操作完 db 当然要调用 SubmitChanges() 或者 SaveChanges() 才能反映到数据库里。建议查查MSDN
      

  4.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Configuration;namespace 测试数据库连接
    {
        public partial class Form1 : Form
        {
            SqlDataReader dr;
            public Form1()
            {
                InitializeComponent();
            }        /*private void Form1_Load(object sender, EventArgs e)
            {
                string conntext = ConfigurationManager.ConnectionStrings["测试数据库连接.Properties.Settings.testtestConnectionString"].ConnectionString;
                using (SqlConnection sqlconn = new SqlConnection(conntext))
                {
                    try
                    {
                        sqlconn.Open();
                        if (sqlconn.State == ConnectionState.Open)
                        {
                            MessageBox.Show("数据库已经连接成功!");
                        }                }
                    catch (Exception ex)
                    {
                        MessageBox.Show("数据库已经连接失败!");
                    }
                    finally
                    {
                        sqlconn.Close();
                    }
                }
            }*/
            private SqlConnection getConnection()
            {
                string conntext = ConfigurationManager.ConnectionStrings["测试数据库连接.Properties.Settings.testtestConnectionString"].ConnectionString;
                SqlConnection sqlconn = new SqlConnection(conntext);
                return sqlconn;
            }
            private void gettable()
            {
                SqlConnection sqlconn = getConnection();
                SqlCommand sqlcmd = sqlconn.CreateCommand();
                sqlcmd.CommandText = "select * from Table_1";
                sqlconn.Open();
                dr = sqlcmd.ExecuteReader();
                //sqlconn.Close();
                if (dr.Read())
                {
                    xuehaotextBox.Text = dr.GetString(0).ToString();
                    xingmingtextBox.Text = dr.GetString(1).ToString();
                    dianhuatextBox.Text = dr.GetString(2).ToString();
                }
            }        private void lianjiebutton_Click(object sender, EventArgs e)
            {
                gettable();
            }        private void xiayitiaobutton_Click(object sender, EventArgs e)
            {
                if (dr.Read())
                {
                    xuehaotextBox.Text = dr.GetString(0).ToString();
                    xingmingtextBox.Text = dr.GetString(1).ToString();
                    dianhuatextBox.Text = dr.GetString(2).ToString();
                }
                else
                {
                    gettable();
                }
            }        private void shanchubutton_Click(object sender, EventArgs e)
            {
                SqlConnection sqlconn = getConnection();
                SqlCommand sqlcmd = sqlconn.CreateCommand();
                sqlcmd.CommandText = "delete  from Table_1 where 学号='"+xuehaotextBox .Text .ToString ()+"'";
                sqlconn.Open();
                sqlcmd.ExecuteNonQuery();
                sqlconn.Close();
                if (dr.Read())
                {
                    xuehaotextBox.Text = dr.GetString(0).ToString();
                    xingmingtextBox.Text = dr.GetString(1).ToString();
                    dianhuatextBox.Text = dr.GetString(2).ToString();
                }
                else
                {
                    gettable();
                }
            }        private void charubutton_Click(object sender, EventArgs e)
            {
                SqlConnection sqlconn = getConnection();
                SqlCommand sqlcmd = sqlconn.CreateCommand();
                sqlcmd.CommandText = "insert into Table_1 values('"  +xuehaotextBox.Text.ToString()+  "','"+xingmingtextBox .Text.ToString ()+ "','"+dianhuatextBox .Text .ToString ()+"')";
                sqlconn.Open();
                sqlcmd.ExecuteNonQuery();
                sqlconn.Close();
                if (dr.Read())
                {
                    xuehaotextBox.Text = dr.GetString(0).ToString();
                    xingmingtextBox.Text = dr.GetString(1).ToString();
                    dianhuatextBox.Text = dr.GetString(2).ToString();
                }
                else
                {
                    gettable();
                }        }
        }
    }这是我的那个程序,麻烦你看一下,谢谢
      

  5.   


    利用你的测试代码,可以正常测试 插入 删除 读取 下一条操作
    我用的是SQL SERVER里面的一个数据库你数据库是放在哪里的,看看你的数据库连接字符串
      

  6.   

    数据库是自动复制到那个里面的,在\bin\Debug里面
    下面是app.config文件的代码,里面有链接字符串,你看一下<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
        </configSections>
        <connectionStrings>
            <add name="测试数据库连接.Properties.Settings.testtestConnectionString"
                connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\testtest.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>
    </configuration>
    就是插入删除都可以实现,而且插入了再读取也可以看到,但是关闭这个小的应用程序后,再打开这个程序数据库中的数据又恢复到原来的样子说是那些修改只是在缓存里面,没有更新到数据库中,需要SubmitChanges()或者saveChanges才可以,可是我不会用
    相信你,谢谢
      

  7.   

    你写成事务方式的吧,最后commit,那样比较可靠一些。
      

  8.   

    你的数据库连接字符串有问题哪里有这么写的
        <add name="conn" connectionString="Server=localhost; Database=wharf; Uid=sa; Pwd=123456;" providerName="System.Data.SqlClient"/>
      

  9.   

    testtest.mdf是不是你的工程文件。每次编译后被覆盖。
      

  10.   

    那是因为你的where 条件的问题啊,"delete  from Table_1 where 学号='"+xuehaotextBox .Text .ToString ()+"' where 数据库中有学号为xuehaotextBox .Text .ToString() 的吗
    /?
      

  11.   

    <connectionStrings>
            <add name="conn"
                connectionString="data source = .;databasename =你的数据库名;uid = sa;pwd = 123"
                providerName="System.Data.SqlClient" />
        </connectionStrings>
    name="???????(这里不要不用汉字)"我这里有个DBHelper类.写的很全,可以直接套用,不用再写数据连接,避免出错,要的可以找我...