为什么.net用C#往Access数据库写不进数据,但删除或读取都可以

<script language="C#" runat="server">
void btn(object sender,EventArgs e)

{
string sid=textbox1.Text;
int stihao=0,flag=0; //数据库中若无数据,flag不会产生循环赋值,必须赋初值0
string ti_mulu;

string strc = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = ";
strc+=Server.MapPath("student.mdb"); //使用相对路径
//C:\\Inetpub\\wwwroot\\RWdatabase\\student.mdb"; //原来的绝对路径
OleDbConnection olecon=new OleDbConnection(strc);
olecon.Open();

OleDbCommand comd = new OleDbCommand();
comd.Connection = olecon;
comd.CommandText = "select * from biao";

OleDbDataAdapter DA = new OleDbDataAdapter("select * from biao",olecon);
// DA.SelectCommand = comd;

//DA.InsertCommand = combuilder.GetInsertCommand(); //这行好象没用
// DA.UpdateCommand = combuilder.GetUpdateCommand();
//DA.DeleteCommand = combuilder.GetDeleteCommand();
//olecon.Close(); 这里不能关闭,后面还要写呢

DataSet DS = new DataSet();
DA.Fill(DS,"biao");
DataTable DT;
DataRowCollection coldrow;
DataRow drow;

DT=DS.Tables["biao"];
coldrow = DT.Rows;
for(int i=0;i<coldrow.Count;i++)
{
drow = coldrow[i];
if(Convert.ToInt32(drow[0])==Convert.ToInt32(textbox1.Text))
{stihao=Convert.ToInt32(drow[1]); flag=1; break;}
else flag=0;
}

if(flag==0) //没找到学号,要写数据
{
System.Random rnd = new System.Random();
int intrnd = rnd.Next(0,6); //产生随即题号
stihao=intrnd;

drow=DS.Tables["biao"].NewRow(); //写 (写不进去,可能数据类型不匹配)
drow[0]=Convert.ToInt32(textbox1.Text); //或=textbox1.Text
drow[1]=Convert.ToInt32(stihao);
DS.Tables["biao"].Rows.Add(drow);
DS.Tables["biao"].AcceptChanges();
OleDbCommandBuilder combuilder = new OleDbCommandBuilder(DA);
DA.Update(DS,"biao");

//删除实验,证明可以删除
comd.CommandText="delete from biao where id=7";
comd.ExecuteNonQuery();

olecon.Close();
label1.Text+="增加成功";

//写完后,出题,题号为刚产生的随即数字
ti_mulu="../test3/ti"+Convert.ToString(stihao)+".htm";
Response.Redirect(ti_mulu);
}
else //找到学号,出题,题号为数据库中的题号
{
ti_mulu="../test3/ti"+Convert.ToString(stihao)+".htm";
Response.Redirect(ti_mulu);
label1.Text+="找到学号";
}

olecon.Close();
}
</script>
</HEAD>

是你的数据库的文件所在的文件夹的权限没给设置好,右击数据库的文件所在的文件夹,出现文件夹属性对话框,单击“安全”选项,如果没有“安全”选项,则在控件面板中单击“文件夹选项”,选中“查看”选项,把“使用简单文件共享”的勾去掉。接着上面的步骤,在安全选项中。单击“添加”,出现选择用户和组对话框,单击“高级”,在对话框中单击“立即查找”,在底下出现很多的用户名称,选择ASPNET,单击“确定”,再单击“确定”,在安全选项的组或用户名称中可以看到刚才添加的ASPNET用户,选中这个用户名称,在底下的权限中,有读取、写入等权限,在“写入”前打勾,确定就OK。哎,打字好难啊!为你这个悬赏分为0分的回答,真不值得,哎,算了,不计较这些了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-06-30
那说明你的连接没有错,那就可能是你的SQL语句写错了嘛.在检查一下你的insert语句写错了没有,或是执行了没有本回答被提问者采纳

用c#操作Access数据库,只能读不能插入,不报错.
应该是权限问题,IIS用户对Access文件本身没有修改权限。添加EveryOne的修改权限,或者找出IIS用户添加修改权限。

C#+Access 程序中插入数据成功,数据库中却没有数据
access数据库真正被改数据的是你debug下面的 每当你用VS2005运行调试程序都会从你指定的目录拷贝一份到debug下面 希望你直接运行debug下面的exe文件 你会发现没错的 这是一个很常见的问题 第一次用access都会碰到的

asp.net 用c#连接access连不上。
你先不要用try,放在这个里面看不到错误信息,把try和 catch都注释掉,运行之后看看错误是什么然后再处理。

C# 程序中插入数据成功,数据库中却没有数
或者是执行插入操作,然后重新打开数据库看看有没有数据,可能是你没刷新所以看不到数据也有可能。如果是重新打开数据库还是没发现所添加的数据,那么就真的能确认是你程序的问题了。

C# 对access 数据库进行操作 (删除 或者 添加)以后,再用 access 查看...
你做了这些操作之后更新数据库没有。。要记得更新数据库的。如果你不更新的话,那数据库肯定就是跟没有更新前是一样的了。需要调用update()函数的。将修改后的数据推到access里面去的。

vscode编辑c#程序不能连接access数据库?
你创建的应该是.netcore项目 而传统的oledb只能使用与老的.net framework 你可以修改下你的项目类型(推荐),或者用nuget下载 System.Data.OleDb包

C# 往Access数据库插入数据
," +Convert.ToDateTime(textBox6.Text)+")";这里是不是少了一个'应该是 ,‘" +Convert.ToDateTime(textBox6.Text)+"’)";还有是不是你的日期格式也有错,把它转换成只有年月日的,记得有一个日期格式可以准换成toshortstring

C#连接远程ACCESS数据库问题
那你用ACCESS转换到SQL。用转换器打开”控制面板“下”管理工具“中的”数据库源按”添加“添加一个新的数据源,在选择栏里选”Driver do microsoft Access(*.mdb)”,完成后将出现一个框,在”数据库源“里面输入你想写的名称,我取名叫“ABC”,说明不需要填,接着,按下面的选择,寻找你的数据库...

C#访问局域网中的Access数据库
1.在list.mdb所在主机创建一个共享目录(赋予写权限),并映射到本地;2.连接语句:db="z:\/list.mdb" '数据库文件位置(z为你映射的盘符)connstr="DBQ="+db+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"不过猜你想要访问的access数据库所在的主机你不能随便使用吧 ...

如何通过网络(Internet)访问ACCESS数据库?
可以是可以,但是你这样访问会出问题,ACCESS是以独占形式存在的,当那边在使用,你这边就只能只读了,如果你不会编程哪我教你个简单办法:在局域网范围随便那台电脑安装个SQL Server 用ACCESS在局域网范围新建一个连接表,让连接表去链接SQL Server的表,这教网络连接表 然后在局域网范围你的ACCESS就...

相似回答
大家正在搜