房租管理小软件(四):对linq的使用
1.对LInq的封装如下:
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
public static MyFZDataContext a = null;
static String path = Application.StartupPath;
public MyFZDataContext(): base(getConnstring(), mappingSource)
{ } public MyFZDataContext(bool b): base(getConnstring(), mappingSource)
{
this.ObjectTrackingEnabled = b;
} public static string connstring = "";
public static XmlSerialize xml = new XmlSerialize();
public static Common.Setting set = xml.DeSerialize(); public static string getConnstring()
{
String Ip = set.IP;
string user = set.User;
string pass = set.Password;
string DB = set.DB;
connstring = "Data Source=" + Ip + ";Initial Catalog=" + DB + ";Persist Security Info=True;User ID=" + user + ";Password=" + pass + "" + ";Application Name=" + "NetHotel";
return connstring;
} public static MyFZDataContext getDataContext()
{
if (a == null)
{ a = new MyFZDataContext(false);
}
return a; }
2.在代码中使用时加入
using System.Data.Linq;
using System.Linq;
using DataBase;
3.一个从数据库,得到数据的例子
MyFZDataContext dataContext = new MyFZDataContext();
var v1 = from t in dataContext.VIEW_LD
where
t.账号.Contains(textEdit_Search.Text) ||
t.手机.Contains(textEdit_Search.Text) ||
t.承租人.Contains(textEdit_Search.Text)
select t;
DataTable dt = DataFunction.LINQToDataTable(v1);
this.gridControl1.DataSource = dt;
4.事务的使用
#region 增加//增加
MyFZDataContext dataContext = new MyFZDataContext();
if (dataContext.Connection != null) { dataContext.Connection.Open(); }
System.Data.Common.DbTransaction tran = dataContext.Connection.BeginTransaction();
dataContext.Transaction = tran;
try
{
dataContext.SubmitChanges(); tran.Commit();
MessageBox.Show("保存成功");
this.Close();
}
catch (Exception ex)
{ tran.Rollback();
MessageBox.Show(ex.Message);
}
#endregion
5.把得到数据转成dataTable
public static DataTable LINQToDataTable<T>(IEnumerable<T> varlist)
{
DataTable dtReturn = new DataTable(); // column names
PropertyInfo[] oProps = null; if (varlist == null) return dtReturn; foreach (T rec in varlist)
{
//// Use reflection to get property names, to create table, Only first time, others
//will follow
if (oProps == null)
{
oProps = ((Type)rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()
== typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[];
} dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
} DataRow dr = dtReturn.NewRow(); foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue
(rec, null);
} dtReturn.Rows.Add(dr);
}
return dtReturn;
}
房租管理小软件(四):对linq的使用的更多相关文章
- 房租管理小软件(六):通用功能包括时间,效验,MD5加密,XML 操作
1.时间相关 public static DateTime getNow() { MyFZDataContext dataContext = MyFZDataContext.getDataContex ...
- 房租管理小软件(七):flowlayoutPancel 中增加分类控
见下图的 string FNodeName = dt.Rows[i]["FNodeName"].ToString(); ) { RoomControl.Thumbnail.Grou ...
- Qt基于sqlite数据库的管理小软件
闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...
- Mac 上有哪些比较有意思的小软件?
文章素材来源:微博.新浪看点 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一) ...
- 66、django之模型层(model)--多表相关操作(图书管理小练习)
前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...
- django之模型层(model)--多表相关操作(图书管理小练习)
前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...
- 8个爽滑如丝的Windows小软件,不好用你拿王思葱砸死我
假如我说有一款软件,能顶替60款软件:还有一款软件,能顶替60个你:还有一款软件,好用到60岁你都不想它被顶替.....我知道,你不相信天是蓝的,你不相信雷的回声,你不相信梦是假的,你不相信死无报应. ...
- C# 小软件部分(一)
自己在空闲时分整合.编写了一款小软件程序,命名为魔法兔子,希望大家可以提出意见和指导,此篇文章主要为软件的部分截图和介绍. 软件详情: 1.首先是登录,注册界面. 可以注册自己的账号,后台是腾讯云服务 ...
- 自己工作之余做的OSX小软件
ShareSDK是为iOS.Android.WindowsPhone提供社会功能的一个组件,开发者只需10分钟即可集成到自己的APP中,它不仅支持分享给QQ好友.微信好友.微信朋友圈.新浪微博.腾迅微 ...
随机推荐
- linux驱动系列之文件压缩解压小节(转)
转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...
- C++内存泄露调试
我在看DirectX Sample的时候,看到以下代码: // Enable run-time memory check for debug builds. #if defined(DEBUG) | ...
- linux复制多个文件到文件夹
linux复制多个文件到文件夹 cp file1 file2 file3 directory即将文件file1 file2 file3复制到directory
- mysql 获取季度的第一天 本月的第一天,本周的第一天sql语句(转)
感谢:http://www.111cn.net/database/110/d45124323da8d2d87b80f78319987eda.htm 查看同主题的另一篇博客:http://blog.cs ...
- js key事件 keyCode大全
keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycode 16 ...
- [转载]Log4net学习笔记
Log4net 学习笔记: 主要是根据apache站点整理的: 原文链接:http://logging.apache.org/log4net/release/sdk/ http://logging.a ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- POJ2527+多项式除法
模拟一遍即可. 注意一些特殊情况,见代码. #include<stdio.h> #include<stdlib.h> #include<math.h> #inclu ...
- eclipse代码自动提示功能设置
一 般默认情况下,Eclipse ,MyEclipse的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的, ...
- Map.entrySet() 简介
转载:http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这个例 ...