-----------------C#问题非高手务进-------------------

编程小妞儿 2010-01-28 10:07:34
下面是原是C#+SqlServer
我想把数据库换成 C#+Access 但Access没有SqlTypes这个方法,怎么把中间注释的部分换成跟Access数据库相关的方法

有好的回答再加分
引用原文:http://blog.csdn.net/CodingMouse/archive/2008/12/14/3515969.aspx

using (OleDbConnection conn = new OleDbConnection(connectionString))
{

OleDbCommand cmd = new OleDbCommand(sqltxt, conn);
conn.Open();
//MessageBox.Show(" // 执行 SQL 命令");
using (OleDbDataReader myReader = cmd.ExecuteReader(
CommandBehavior.CloseConnection |
CommandBehavior.SingleResult |
CommandBehavior.SingleRow))
{
if (myReader.Read())
{
//将数据集转换成实体集合
tmpOperator.Id = Convert.ToInt32(myReader["Id"]);
tmpOperator.ModelName = Convert.ToString(myReader["OperatorName"]);
tmpOperator.Password = Convert.ToString(myReader["Password"]);
tmpOperator.State = Convert.ToBoolean(myReader["State"]);

// 读取权限集合
//System.Data.SqlTypes.SqlBytes bytes = myReader.GetSqlBytes(3); // 只能指定列序号
// 将流反序列化为权限集合对象
//BinaryFormatter bf = new BinaryFormatter();
//if (!bytes.Equals(""))
//{
//tmpOperator.RightsCollection = (bf.Deserialize(bytes.Stream) as Dictionary<string, Model.Rights>);
//}
//else
// throw new Exception(string.Format("操作员 [{0}] 没有任何权限,禁止登录!", tmpOperator.ModelName));


}
else
//如果没有读取到内容则抛出异常
throw new Exception("登录名称或用户密码不正确!");
}
...全文
657 100 打赏 收藏 转发到动态 举报
写回复
用AI写文章
100 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程小妞儿 2010-02-03
  • 打赏
  • 举报
回复
引用 98 楼 jingliuting 的回复:
读取数据的时候直接读到 字节数组中
byte[] b = new byte[1024];//设成字段长度
myReader.GetBytes(3,0,b,0,b.Length);//读取字段内容
反序列化的时候使用内存流
System.IO.MemoryStream ms = new System.IO.MemoryStream(b);//生成读取流
bf.Deserialize(ms);//反序列化


报错:指定的转换无效!
关键是:tmpOperator.RightsCollection = (bf.Deserialize(ms) as Dictionary <string, Model.Rights>);
不好匹配!!
Rights->存放权限的实体类.跟RightsCollection (权限组)主外键关系.
编程小妞儿 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 98 楼 jingliuting 的回复:]
读取数据的时候直接读到 字节数组中
byte[] b = new byte[1024];//设成字段长度
myReader.GetBytes(3,0,b,0,b.Length);//读取字段内容
反序列化的时候使用内存流
System.IO.MemoryStream ms = new System.IO.MemoryStream(b);//生成读取流
bf.Deserialize(ms);//反序列化
[/Quote]
报错:指定的转换无效!
关键是:tmpOperator.RightsCollection = (bf.Deserialize(ms) as Dictionary<string, Model.Rights>);
不好匹配!!
Rights->存放权限的实体类.跟RightsCollection (权限组)主外键关系.
じоνё靁〃 2010-02-02
  • 打赏
  • 举报
回复
读取数据的时候直接读到 字节数组中
byte[] b = new byte[1024];//设成字段长度
myReader.GetBytes(3,0,b,0,b.Length);//读取字段内容
反序列化的时候使用内存流
System.IO.MemoryStream ms = new System.IO.MemoryStream(b);//生成读取流
bf.Deserialize(ms);//反序列化
yyz985 2010-02-02
  • 打赏
  • 举报
回复
直接用GetBytes不行么?
bytes = dr.GetBytes(0);
using(MemroyStream ms = new MemroyStream(bytes)){
bf.Deser..(ms);}
abaochan 2010-02-02
  • 打赏
  • 举报
回复
引用 55 楼 wanghui0380 的回复:
恩,我是来看高手的



你的话,让我感觉很不舒服,我觉得你在逛动物园,
我认为凡是能进来的,都是高手.
高手就是高手,是工作经验积累的结晶,不是动物.
ccsflyjj 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 fdh120 的回复:]
每天回帖即可获得10分可用分!
[/Quote]
..
mawering 2010-02-02
  • 打赏
  • 举报
回复
只能跟着学习一下
swornccc 2010-02-02
  • 打赏
  • 举报
回复
路过
yo_yokel 2010-02-02
  • 打赏
  • 举报
回复
首先将 sql。access类继承此接口,实现各个数据库的方法。
应用的时候,实例化接口,并调用接口的方法,就达到你想要的效果了。

/// <summary>
/// 数据工厂接口
/// </summary>
public interface IDBFactory
{

IDbConnection GetConnection();
IDbConnection GetConnection(string strConn);
IDbCommand GetCommand();
IDbDataAdapter GetDataAdapter();
IDataReader GetDataReader(IDbCommand myDbCommand);
IDataParameter GetDataParameter(string strColumn, object strValue,
int size, int dbtype, int direct);
}
HooverHuang 2010-02-02
  • 打赏
  • 举报
回复
使用工厂模式,定义相同的接口,再用不同的数据库来实现都可以了
huyou1983218 2010-02-02
  • 打赏
  • 举报
回复
DbType通用可是,上面写多了
huyou1983218 2010-02-02
  • 打赏
  • 举报
回复
SqlTypes通用,哥们
bnuepwyl 2010-02-02
  • 打赏
  • 举报
回复
都说了 不是高手不让进 你看看 你们都进来干嘛

我是进来带你们出去的
sklkitty 2010-02-02
  • 打赏
  • 举报
回复
偶在这里还遇到高手呀,来看看高手的,学习。
51Crack 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 huminghua 的回复:]
看了咋的一定要高手才能进呢?疑问?那我拿10分走人咯!
[/Quote]
非高手必进,所以我进来看看!
CqCoder 2010-02-02
  • 打赏
  • 举报
回复
up
m_struggle 2010-02-02
  • 打赏
  • 举报
回复
没有真正的高手
Justin-Liu 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 goscan 的回复:]
LZ叫非高手务(必)进,我就来了
[/Quote]
v
iStringTheory 2010-02-02
  • 打赏
  • 举报
回复
不是高手,飘过~
vconan 2010-02-02
  • 打赏
  • 举报
回复
我进来看看高手的。。。
加载更多回复(79)
学生个人文件管理系统 v2.0 A.声明: 1.源代码。 2.有些用户没有设置自己的数据库服务器就直接登录或者注册,这样是不会成的, 请选择自定义服务器,然后填入自己的IP,数据库用户名以及密码,因为默认服 务器的IP是192.168.0.252. 3.暂不支持拖拽功能(将文件拖进去就能上传) 4.每隔10分钟系统会锁定一次,以防止其他用户恶意操作数据,需解锁请输入自己 的登录密码。【暂不支持设置间隔时间或者设置是否采取锁定策略】 5.暂不支持修改上传后的文件的属性(类别等) 6.在Win7上运行时需要管理员权限,请以管理员方式运行本程序。 B.新版特性: 1.修正了大文件上传或下载时服务器超时的Bug. 可上传500M以内的单个文件.(在空间大小足够的前提下) 2.修正了客户端上传文件的时间与服务器时间不同步的Bug, 同时在充分考虑服务器性能的前提下,给客户端提供了正 确的时间。 3.新增数据库压缩功能,针对数据库日志文件动辄上G的问题 提供了解决方案,使客户端用户使用更流畅。(管理员功能) 4.(2011-03-14)纠正了数据创建时错误,适应SQLServer不同 版本的数据库;纠正了在SQLServer下不同版本数据库备份时路径 错误问题。 5.(2011-03-14)纠正了程序中密码验证不区分大小写的错误。 6.(2011-03-18) 纠正了系统锁定后无法解锁的错误 2011-03-18 23:20 南充市扎针高手 李泽波

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧