非常崩溃,C#操作ACCESS全部成功,但数据无变化 我用OleDb操作ACCESS,无论添加、删除、修改全部进行了跟踪,一切正常全部操作成功,但数据库的数据就是毫无变化。用的操作类是我一直使用的,以前都没这个问题。我的系统是WINDOW2003 .NET2005文件夹添加了EveryOne,给了所有权限有没有哪位朋友遇到过这个问题啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最先想到的...把sql语句弄出来,放在access里跑下,看看对不对 文件夹添加了EveryOne,给了所有权限其实如果因为没有权限改不了就会报错了。比较同意其他几位说的 文件夹添加了EveryOne,给了所有权限 ------------------这个从安全角度上是错误的.其实,系统已经自动给相应的目录以NETWORK_SERVICE的访问权限了. //数据库连接字符串 protected static string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB\\Students.mdb;Persist Security Info=False"; public static bool UpdateDataTable(DataTable dt,string tblName,string filter) { try { OleDbConnection conn = new OleDbConnection(connectionString); //打开连接 conn.Open(); OleDbDataAdapter dataAdapter = new OleDbDataAdapter("select * from " + tblName + filter , conn); OleDbCommandBuilder objCommandBuilder = new OleDbCommandBuilder(dataAdapter); //dataAdapter.SelectCommand = objCommandBuilder.GetDeleteCommand(); //dataAdapter.DeleteCommand = objCommandBuilder.GetDeleteCommand(); //dataAdapter.InsertCommand = objCommandBuilder.GetInsertCommand(); //dataAdapter.UpdateCommand = objCommandBuilder.GetUpdateCommand(); //--执行更新操作 dataAdapter.Update(dt); //释放内存空间 dataAdapter.Dispose(); //关闭连接 conn.Close(); return true; } catch(OleDbException e) { Console.WriteLine(e.ToString()); throw new Exception(e.ToString()); } }按钮事件:DataTable dt = (DataTable)dataGridView1.DataSource; for (int i = dataGridView1.Rows.Count-1; i >=0 ; i--) { DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[0]; if (chk.Selected == true) { dt.Rows[i].Delete(); } } bool bl = DbHelperOleDb.UpdateDataTable(dt, "StudentInfo", ""); 我只有这一个数据库 在工程目录下的在查询的时候是没问题的,就是删除、修改、添加,无论直接执行SQL还是用DataAdapter.Update()都不行我再数据库中修改后,窗体里显示的数据也是立刻跟着改变的 SQL语句跑过了 完全正确,没有任何问题 試下debug把sql的value複製出來,然後到Access中的sql視圖測試是否通過,不能通過則可能是某些數據字段不相匹配,如果可以通過則可能是你的其它代碼出問題. protected static string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/网站根目录/DB/Students.mdb") + ";Persist Security Info=False";另外,数据文件毫无疑问要放在App_Data子目录中,而不是放在你自已的DB子目录, 还要给它加上"EVERYONE"权限. 我的是WINFORMS,不是ASP.NET :) 我只有这一个数据库 在工程目录下的-----------------------------------调试的时候,看看是不是复制一份到debug目录下了,这时你测试的是这个数据库,所以,下次再运行,又复制一份到debug目录下,造成之前的数据丢失。 UpdateDataTable 确定执行了吗 串口接收事件后Invoke问题 C# 有个循环读取数据写不来。 求助高手 端口转发怎么写? winform中如何让datagridview中某几个单元格可以编辑,其他不能编辑 求AE+c#画平行线和垂线的代码 请问用webbrowser的navigate方法的时候,能不能指定一个代理服务器 郁闷,初学者请教 WINFORM 窗体内的 DataGrid 控件 选择的问题. 做了一个判断时间的程序,然后时间跳到第二天,我就笑了!!!求思路啊,求方法啊!!! 能在c#中使用c++代码吗? C# 调用C++DLL,参数传递问题[数组] C#用查询SQL数据表中时间记录?有代码高手找出错误,谢谢
把sql语句弄出来,放在access里跑下,看看对不对
其实,系统已经自动给相应的目录以NETWORK_SERVICE的访问权限了.
protected static string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB\\Students.mdb;Persist Security Info=False";
public static bool UpdateDataTable(DataTable dt,string tblName,string filter)
{
try
{
OleDbConnection conn = new OleDbConnection(connectionString);
//打开连接
conn.Open();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter("select * from " + tblName + filter , conn);
OleDbCommandBuilder objCommandBuilder = new OleDbCommandBuilder(dataAdapter);
//dataAdapter.SelectCommand = objCommandBuilder.GetDeleteCommand();
//dataAdapter.DeleteCommand = objCommandBuilder.GetDeleteCommand();
//dataAdapter.InsertCommand = objCommandBuilder.GetInsertCommand();
//dataAdapter.UpdateCommand = objCommandBuilder.GetUpdateCommand();
//--执行更新操作
dataAdapter.Update(dt);
//释放内存空间
dataAdapter.Dispose();
//关闭连接
conn.Close();
return true;
}
catch(OleDbException e)
{
Console.WriteLine(e.ToString());
throw new Exception(e.ToString());
}
}
按钮事件:
DataTable dt = (DataTable)dataGridView1.DataSource;
for (int i = dataGridView1.Rows.Count-1; i >=0 ; i--)
{
DataGridViewCheckBoxCell chk = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[0]; if (chk.Selected == true)
{
dt.Rows[i].Delete();
}
} bool bl = DbHelperOleDb.UpdateDataTable(dt, "StudentInfo", "");
-----------------------------------
调试的时候,看看是不是复制一份到debug目录下了,这时你测试的是这个数据库,所以,下次再运行,又复制一份到debug目录下,造成之前的数据丢失。