尝试把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.