All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
SQL SERVER数据库开发之触发器的应用_[SQL Server教程]
理解才能创新 轻松打造自己的AJAX框架_[AJAX教程]
用.NET实现所见即所得的设计器_[Asp.Net教程]
discuz伪静态设置iis_php资料_编程技术
aspnet_wp.exe,could,not,be,started_.net资料_编程技术
安全知识:如何隐藏,PHP文件后门的技巧_php资料_编程技术
C#网络应用编程基础练习题与答案(四)_.net资料_编程技术
JS获取网页中HTML元素的几种方法分析_[Html教程]
GridView中利用隐藏的TemplateFied来进行数据访问_[Asp.Net教程]
Delphi菜单动态合并实例
Reading number is top 10 pictures
战场废物1
真正的国产-非模拍 贵在是真实1
运动的范冰冰1
生活中总有些低调的人,不经意间散发出土豪的气质
白嫩丰满美女照片
奇趣的世界记录1
超级大兔子
Ashlynn Brooke a group sexy photo1
中国的阶级现状
天安门景物系列(一)
Download software ranking
Love the forty days
Unix video tutorial6
美女写真1
Kung.Fu.Panda.2
艳兽都市
美女写真3
株洲本地在线棋牌游戏
双旗镇刀客B
White deer villiage
jdk1.6 for windows
归海一刀 published in(发表于) 2014/1/30 0:51:13 Edit(编辑)
asp.net,2.0下用access开发的时候要注意的问题_[Asp.Net教程]

asp.net,2.0下用access开发的时候要注意的问题_[Asp.Net教程]

asp.net 2.0下用access开发的时候要注意的问题_[Asp.Net教程]

1、数据库要给访问权限,在我的电脑里,右击access数据库,点击“属性”菜单,选“安全”选项卡,选择Users组,赋给完全控制的权限

  如果没有安全选项卡,点击菜单“工具”->“文件夹选项”,进入“查看”选项卡,把“使用简单文件共享”前的勾去掉

2、连接数据库的时候,如果想要做到可以随时更改数据库的名称,也不用重新编译网站,就把数据库的路径记录在web.config文件里:




  使用这两个方法取值:

public static string connectString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings["aceConnectionString"].ConnectionString);

  public static string GetDB()
{
return HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings["aceConnectionString"].ConnectionString);
}

在每个页面,如果用到AccessDataSource控件,这个控件是不会自己读取这个值的,可以在Page_Load页面里,使用AdsAd.DataFile = NnllClass.GetDB();给他赋值

protected void Page_Load(object sender, EventArgs e)
{
AdsAd.DataFile = NnllClass.GetDB();
}
3、如果使用AccessDataSource添加、删除、修改记录,要注意参数的问题,有一些网站,对一些参数报错的信息,给出的答案说access数据库应该使用拼接的sql语句,不可以使用参数,这种说法是不对的,access数据库也可以使用参数传递的方式增删改查数据库的

就是,因为vs.net 2005不可以像使用ms sql时一样子,自动会检索出参数,所以全部参数要自己手动添加,在添加参数的时候,要很小心,不要少了,也不要多了,也不要搞乱了顺序

发现AccessDataSource控件,好像是根据绑定字段的顺序来对应传入的参数的,也就是说,如果你在FormView里,是这样子绑定的:



定义参数的时候,就应该这样子定义:





次序不要搞乱了,搞乱了数据格式不同时,会报错,具体的出错信息我忘记了

定义参数的时候,还有一个要注意的问题就是,参数名不要写错,参数不要写漏

使用sql数据库时,参数名不对,或者参数个数不对,都会得到很明显的出错信息,就是,access数据库,在这种时候,是不报错的,如果参数名写错了,只会说有n个参数没有值,如果是写漏了参数,他有时候会直接替你更新数据库,而更新的时候,是以绑定的顺序来对应参数的值的,这时候,如果后面的参数值,大于前面的参数对应的字段大小,就会得到“字段太小”的出错信息







如果少了一个


在更新的时候,会把myField3的值,写进myField2里,如果myField3的值的长度大于20,就会报“字段太小”了

3、如果不习惯AccessDataSource控件,那就自己绑定数据吧,给出一些方法:

#region 返回数据库地址
public static string GetDB()
{
return HttpContext.Current.Server.MapPath(ConfigurationManager.ConnectionStrings["aceConnectionString"].ConnectionString);
}
#endregion


#region 打开数据库:SqlConnection OpenConnect()
public OleDbConnection OpenConnect(Page aPage,bool setMsg)
{
try
{
OleDbConnection dbConnect = new OleDbConnection(connectString);
if (!dbConnect.State.Equals(ConnectionState.Open))
{
dbConnect.Open();
}
return dbConnect;
}
catch (OleDbException ex)
{
if (setMsg)
{
SetMsgJS(aPage.Master, "连接数据库失败:" + ex.Message.Replace("\n", "").Replace("\r", ""));
}
return null;
}
}
#endregion


#region 关闭数据库:void CloseConnect(SqlConnection dbConnect)
public void CloseConnect(OleDbConnection dbConnect)
{
if (dbConnect.State.Equals(ConnectionState.Open))
{
dbConnect.Close();
}
}
#endregion


#region 读取数据,返回DataSet
public DataSet GetDataSet(Page aPage, OleDbConnection dbConnection, CommandType commandType, string commandText, out string msg, bool setMsg)
{
msg = "";

//创建并设置SqlCommand
OleDbCommand dbCommand = new OleDbCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandType = commandType;
dbCommand.CommandText = commandText;
//创建SqlDataAdapter并获取数据
DataSet ds = new DataSet();
try
{
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);
dataAdapter.Fill(ds);
}
catch (InvalidOperationException eo)
{
msg = "读取数据失败:" + eo.Message.Replace("\n", "").Replace("\r", "") + "\\n";
if (setMsg)
{
SetMsgJS(aPage.Master, msg);
}
}
catch (OleDbException ex)
{
msg = "读取数据失败:" + ex.Message.Replace("\n", "").Replace("\r", "") + "\\n";
if (setMsg)
{
SetMsgJS(aPage.Master, msg);
}
}

//返回数据
return ds;
}
#endregion



#region 读取数据,返回SqlDataReader
public OleDbDataReader GetDataReader(Page aPage, OleDbConnection dbConnection, CommandType commandType, string commandText, OleDbParameter[] p, out string msg, bool setMsg)
{
msg = "";
//设置命令
OleDbCommand dbCommand = new OleDbCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandType = commandType;
dbCommand.CommandText = commandText;
//设置参数
if (p != null)
{
foreach (OleDbParameter pi in p)
{
dbCommand.Parameters.Add(pi);
}
}
//读取第一个结果集
OleDbDataReader dbReader = null;
try
{
dbReader = dbCommand.ExecuteReader();
}
catch (InvalidOperationException eo)
{
msg = "读取数据失败:" + eo.Message.Replace("\n", "").Replace("\r", "") + "\\n";
if (setMsg)
{
SetMsgJS(aPage.Master, msg);
}
}
catch (OleDbException ex)
{
msg = "读取数据失败:" + ex.Message.Replace("\n", "").Replace("\r", "") + "\\n";
if (setMsg)
{
SetMsgJS(aPage.Master, msg);
}
}
return dbReader;
}
#endregion


#region 执行sql命令或存储过程
public int execCommand(Page aPage, OleDbConnection dbConnection, CommandType commandType, string commandText, OleDbParameter[] p, out string msg, bool setMsg)
{
bool needCloseDB = false;
int row = 0;
msg = "";
//创建并设置SqlConnection
if (dbConnection == null)
{
needCloseDB = true;
dbConnection = OpenConnect(aPage, setMsg);
if (dbConnection == null) return -1;
}
//创建并设置SqlCommand
OleDbCommand dbCommand = new OleDbCommand();
dbCommand.Connection = dbConnection;
dbCommand.CommandType = commandType;
dbCommand.CommandText = commandText;
//设置参数
if (p != null)
{
foreach (OleDbParameter pi in p)
{
dbCommand.Parameters.Add(pi);
}
}
//执行命令
try
{
row = dbCommand.ExecuteNonQuery();
}
catch (InvalidOperationException eo)
{
msg = eo.Message.Replace("\n", "").Replace("\r", "") + "\\n";
if (setMsg)
{
SetMsgJS(aPage.Master, msg);
}
row = -1;
}
catch (OleDbException ex)
{
//执行过程出错
msg = ex.Message.Replace("\n", "").Replace("\r", "") + "\\n";
if (setMsg)
{
SetMsgJS(aPage.Master, msg);
}
row = -1;
}
//关闭数据库
if (needCloseDB)
{
CloseConnect(dbConnection);
}
return row;
}
#endregion
上面的方法都用到一个SetMsgJS方法,这个方法是用来给母版页设置信息的


public static void SetMsgJS(MasterPage masterPage, string msg)
{
Literal lt = (Literal)masterPage.FindControl("LiteralMsg");
if (lt != null)
{
lt.Text += msg;
}
}
在母版页里定义是这样子的:








添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.