回 帖 发 新 帖 刷新版面

主题:[原创]【求助】用C#做网页时碰见的Access数据库写入问题

我使用Visual studio 2003在写一个基于C#的WEB的留言板程序,使用Access数据库,现在发现奇怪的情况如下:
1.可以正常读取Access数据库中的内容。
2.不能进行插入,更新等写操作,提示错误信息为:“操作必须使用一个可更新的查询”。
3.当我关闭这个程序时,发现Access数据库处于“只读”状态。
4.我已经检查了N遍代码,认为没有错误,SQL查询语句也已经证明是可以执行的。
5.如果将程序做成windows程序,同样的写入和更新操作是可以执行的,只是在web程序中无法执行,另我相当郁闷。
二楼附测试程序的主要代码信息,请各位高人指点迷津!
哪位高手帮帮忙啊!急寻答案!

回复列表 (共3个回复)

沙发

public class WebForm1 : System.Web.UI.Page
{
    protected System.Web.UI.WebControls.TextBox Title;
    protected System.Web.UI.WebControls.TextBox Body;
    protected System.Web.UI.WebControls.Button UpdataDataBtn;
    private readonly string AccessConnectionString = ConfigurationSettings.AppSettings["AccessConnectionString"].ToString();
    protected System.Web.UI.WebControls.TextBox LeavewordID;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (!Page.IsPostBack)
    {
        ShowDBData();
    }
     }

    private void InitializeComponent()
    {    
    this.UpdataDataBtn.Click += new System.EventHandler(this.UpdataDataBtn_Click);
    this.Load += new System.EventHandler(this.Page_Load);
     }

    private void ShowDBData()
    {    //设置访问数据库的连接字符串
    string accessString = AccessConnectionString + Server.MapPath("ChundaDB.mdb");
    string cmdText = "Select * from Leavewords";    //创建SQL语句
    //创建数据库的连接和Command
    OleDbConnection accessConn = new OleDbConnection(accessString);
    OleDbCommand accessComm = new OleDbCommand(cmdText, accessConn);

         //定义数据显示格式
    string dataString = "<br>ID 主题 内容 时间<br>";
    try
    {//打开数据库连接
        accessConn.Open();
        Response.Write("连接Chunda数据库成功!!!");
    //显示数据库信息
        OleDbDataReader reca = accessComm.ExecuteReader();
        while(reca.Read())
        {//获取相应数据
          dataString += reca["LeavewordID"].ToString() + "   " + ["Title"].ToString() + "   " + ["Body"].ToString() + "   " + reca["CreateTime"].ToString();
          dataString += "<br>";
              }
    reca.Close();
    Response.Write(dataString);
    accessConn.Close();
          }
    catch(Exception ex)
    {
        Response.Write(ex.Message);
    }
      }

    private void UpdataDataBtn_Click(object sender, System.EventArgs e)
    {
        if (Title.Text.Trim().Length > 0 && Body.Text.Trim().Length > 0)
        {
            UpdataDBData(LeavewordID.Text.Trim(), Title.Text, Body.Text);
            ShowDBData();
        }
    }

private void UpdataDBData(string ID, string upTitle, string upBody)
{
    //设置访问数据库的连接字符串
    string accessString = AccessConnectionString + Server.MapPath("ChundaDB.mdb");
    //创建SQL语句
    string cmdText = "UPDATE Leavewords SET Title='" + upTitle + "', " + "Body='" + upBody + "' " + "WHERE LeavewordID=" + ID + ";";

    //创建数据库的连接和Command
    OleDbConnection accessConn = new OleDbConnection(accessString);
    OleDbCommand accessComm = new OleDbCommand(cmdText, accessConn);
    try
    {//打开数据库连接
        accessConn.Open();            
        accessComm.ExecuteNonQuery();
        accessConn.Close();
    }
    catch(Exception ex)
    {
        Response.Write(ex.Message);
    }
}



板凳

给IIS进程匿名用户以及ASP.NET用户授予该数据库所在文件夹的修改权限。

3 楼

多谢~~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册