2 sxl0727 sxl0727 于 2013.12.17 14:53 提问

C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变。

尝试把accdb放在debug文件下下过,但是我导入时它自动就会在项目文件夹里复制过去一个数据库文件。insert操作时,显示插入的信息是成功的,并且当时可以搜索到该数据,但重新运行程序后,以前的数据未被保存。

App.config

< ?xml version="1.0" encoding="utf-8" ?>
< configuration>
< configSections>

< connectionStrings>
< add name="BusDB"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Bus(原件).accdb;Persist Security Info=True"
providerName="System.Data.OleDb" />
< /connectionStrings>
< startup>
< supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
< /startup>

< /configuration>

BusDB.cs

(插入函数都差不多,就贴一个,因为数据都是这个情况。)

    public static void addBusID(String busID)
    {
        DbCommand cmd = Connection.CreateCommand();
        cmd.CommandText = String.Format("INSERT INTO [Bus] VALUES ('{0}')", busID);
        cmd.ExecuteNonQuery();
    }

MainWindow.xml.cs //此处代码我已修改为简单版本,为测试用,就insert busID

public partial class MainWindow : Window
{

    public MainWindow()
    {
        InitializeComponent();
    }        
    private void button1_click(object sender, RoutedEventArgs e)
    {
        List<String> station = new List<string>();
        if (busNumber.Text == "")
        {
            MessageBox.Show("请输入车次");
            busNumber.Focus();
            return;
        }
        else if( BusDB.existBusID(busNumber.Text)==true)
        {
            MessageBox.Show("该车已存在");
            busNumber.Focus();
            return;
        }
        else if (addstations.Text == "")
        {
            MessageBox.Show("请输入车站");
            addstations.Focus();
        }
        else
        {
           BusDB.addBusID(busNumber.Text);//简化版
        }
    }
    private void window_loaded(object sender, RoutedEventArgs e)
    {
        string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["BusDB"].ConnectionString;
        BusDB.Connection = new OleDbConnection(connStr);
        try
        {
            BusDB.Open();
        }
        catch (Exception ex)
        {
            if (MessageBox.Show(ex.Message + "\r\n是否继续?", "数据访问错误", MessageBoxButton.YesNo) == MessageBoxResult.No)
                this.Close();
        }
    }

    private void window_closed(object sender, EventArgs e)
    {
        BusDB.Close();
    }

}

}

设置断点后,可以得到 cmd.ExecuteNonQuery() 的返回值是1.

CSDN移动问答
CSDN移动问答
CSDN移动问答CSDN移动问答CSDN移动问答CSDN移动问答

3个回答

doyouwanna
doyouwanna   2013.12.17 15:06

Debug嘛。
Release方式呢?

sxl0727
sxl0727 谢谢,不过我试了下,还是这个问题没有解决。我百度过,有人遇到相似的问题,但是他最后解决了没说是怎么解决的,好像说是路径问题,我还是没办法解决呢。
4 年多之前 回复
doyouwanna
doyouwanna Debug是调试模式,Release是发布模式。设置在工程属性中
4 年多之前 回复
sxl0727
sxl0727 本人比较笨,对大家的简称啊,什么都不大清楚呢,可以说仔细一点吗,谢谢您
4 年多之前 回复
u013187512
u013187512   2013.12.17 15:09

offficde方式

sxl0727
sxl0727 这个我不懂哎,求详细说下这是什么方式。
4 年多之前 回复
chengl24
chengl24   2013.12.17 16:10

这个问题是数据库连接的问题,看看到底是连的哪个数据库

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!