主题:[原创]【求助】用C#做网页时碰见的Access数据库写入问题
marcoyu1
[专家分:0] 发布于 2006-09-24 13:27:00
我使用Visual studio 2003在写一个基于C#的WEB的留言板程序,使用Access数据库,现在发现奇怪的情况如下:
1.可以正常读取Access数据库中的内容。
2.不能进行插入,更新等写操作,提示错误信息为:“操作必须使用一个可更新的查询”。
3.当我关闭这个程序时,发现Access数据库处于“只读”状态。
4.我已经检查了N遍代码,认为没有错误,SQL查询语句也已经证明是可以执行的。
5.如果将程序做成windows程序,同样的写入和更新操作是可以执行的,只是在web程序中无法执行,另我相当郁闷。
二楼附测试程序的主要代码信息,请各位高人指点迷津!
哪位高手帮帮忙啊!急寻答案!
回复列表 (共3个回复)
沙发
marcoyu1 [专家分:0] 发布于 2006-09-23 21:46:00
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);
}
}
板凳
jzyray [专家分:20610] 发布于 2006-09-24 21:43:00
给IIS进程匿名用户以及ASP.NET用户授予该数据库所在文件夹的修改权限。
3 楼
marcoyu1 [专家分:0] 发布于 2006-10-02 22:21:00
多谢~~~~
我来回复