C#操作LINQ to SQL组件进行数据库建模的基本教程

建立实体类
使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类。在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作。数据库返回后,LINQ to SQL负责将结果转换成实体类对象。

建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等。其中最方便的就是LINQ to SQL设计器。

1.使用LINQ to SQL设计器建立实体类        
在一个示例用的Demo控制台程序中添加一个“基于服务的数据库”Database1.mdf,建立一张tb_GuestInfo的表。该表的详细如下:

下面的所有建立方式,都用的这个数据库。

在项目中添加一个LINQ to SQL类,采用默认的名称DataClasses1.dbml,如下:

将tb_GuestInfo表拖到界面上,保存。

OK,编写相关代码如下,实现增删改查:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_To_SQL自定义数据库和实体类
{
  /// <summary>
  /// 实体类的建立___1.VS建立实体类
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      //
      DataClasses1DataContext dc = new DataClasses1DataContext();

      //1.查询
      IQueryable<tb_GuestInfo> query = from p in dc.tb_GuestInfo
                       where p.Name != "XXX"
                       select p;

      foreach (var g in query)
      {
        Console.WriteLine("{0} {1} {2} {3}",g.Id,g.Name,g.Age ,g.Tel );
      }

      Console.WriteLine("-----------------");
      Console.ReadKey(false);
      //2.增加一条记录
      tb_GuestInfo gInfo = new tb_GuestInfo() { Id = 9, Name = "M&M", Age = 40, Tel = "135****5555" };
      dc.tb_GuestInfo.InsertOnSubmit(gInfo);
      dc.SubmitChanges();

      foreach (var g in query)
      {
        Console.WriteLine("{0} {1} {2} {3}",g.Id , g.Name, g.Age, g.Tel);
      }

      Console.WriteLine("-----------------");
      Console.ReadKey(false);

      //3.删除
      var query_itemToDelete = from g in dc.tb_GuestInfo
                   where g.Name == "M&M"
                   select g;
      foreach (var g in query_itemToDelete)
      {
        dc.tb_GuestInfo.DeleteOnSubmit(g);
      }
      dc.SubmitChanges();

      foreach (var g in query)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("-----------------");
      Console.ReadKey(false);

      //4.修改
      var query_itemToUpdate = from g in dc.tb_GuestInfo
                   where g.Name.Contains("DebugLZQ")
                   select g;

      foreach (var g in query_itemToUpdate)
      {
        g.Name = g.Name + "A";
      }
      dc.SubmitChanges();

      foreach (var g in query)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }

      Console.WriteLine("-----------------");
      Console.ReadKey(false);

    }
  }
}

程序运行结果如下:

2.手动建立实体类                    
实体类在多数情况下可以通过LINQ to SQL类设计器建立,当然动手建立一个简单的实体类也不是难事,并且可以更好的学习LINQ to SQL的对象模型。数据库依然是前面的示例数据库。

在项目中添加一个类GuestInfoEntity.cs,如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq.Mapping;

namespace DataContexDemo
{
  /// <summary>
  /// 手动建立实体类
  /// </summary>
  [Table(Name="tb_GuestInfo")]
  class GuestInfoEntity
  {
    [Column(IsPrimaryKey=true,DbType="Int NOT NULL IDENTITY",IsDbGenerated=true,Name="Id")]
    public int ID { get; set; }

    [Column(DbType = "nvarchar(20)", Name = "Name")]
    public string Name{get;set;}

    [Column(DbType = "int", Name = "Age")]
    public int Age { get; set; }

    [Column(DbType = "nvarchar(20)", Name = "Tel")]
    public string Tel { get; set; }
  }
}

编写示例代码,注意需要引入System.Data.Linq.dll:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;//关注

namespace DataContexDemo
{
  class Program
  {
    static void Main(string[] args)
    {
      //2.手动建立实体类
      //
      //连接字符串
      string constring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Visual Studio 2010\LINQ_to_SQL\LINQ_To_SQL自定义数据库和实体类\Database1.mdf;Integrated Security=True;User Instance=True";

      DataContext dc = new DataContext(constring);

      Table<GuestInfoEntity> tb = dc.GetTable<GuestInfoEntity>();

      var query = tb.AsEnumerable();

      foreach (var q in query)
      {
        Console.WriteLine("{0} {1} {2} {3}",q.ID,q.Name,q.Age,q.Tel );
      }

      Console.ReadKey();
    }
  }
}

程序运行如下:

3.使用XML映射文件建立实体类                         
 实体类的映射除了使用内联Attribute外,还可以建立一个包含映射信息的XML文件,此文件生成System.Data.Linq.Mapping.XmlMappingSource对象,作为DataContext对象构造方法的参数。

这个XML文件只有一个根节点---Database元素,用来映射的数据库信息。Database元素包含一个或多个Table元素,用于映射数据库表的信息,Table元素由一个Type元素和多个Column元素(或Association元素)组成。Type元素用来指定实体类,Column元素用来指定列信息,Association元素用来映射数据库关系。

在项目中添加一个XML文件,采用默认名称XMLFile1.xml,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<Database Name="Database1" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"><!--数据库名称可随意;名称空间一定要加上-->
 <Table Name="tb_GuestInfo"><!--数据库中表的名称-->
  <Type Name="LINQtoSQL建立实体类_XML.GuestInfoEntity"><!--太BT了,居然要全名;GuestInfoEntity居然不行-->
   <Column Name="Id" Member="ID" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true"/>
   <Column Name="Name" Member="Name" DbType="nvarchar(20)" />
   <Column Name="Age" Member="Age" DbType="int" />
   <Column Name="Tel" Member="Tel" DbType="nvarchar(20)" />
  </Type>
 </Table>
</Database>

这个XML文件包含类全部的映射信息,下面建立映射的类GuestInfoEntity.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQtoSQL建立实体类_XML
{
  public class GuestInfoEntity
  {
    public int ID { get; set; }

    public string Name { get; set; }

    public int Age { get; set; }

    public string Tel { get; set; }
  }
}

编写示例代码,同样需要引入System.Data.Linq.dll:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.IO;//

namespace LINQtoSQL建立实体类_XML
{
  class Program
  {
    static void Main(string[] args)
    {
      string constring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Visual Studio 2010\LINQ_to_SQL\LINQ_To_SQL自定义数据库和实体类\Database1.mdf;Integrated Security=True;User Instance=True";

      XmlMappingSource map = XmlMappingSource.FromXml(File.ReadAllText("XMLFile1.xml"));

      DataContext dc = new DataContext(constring, map);

      Table<GuestInfoEntity> tb = dc.GetTable<GuestInfoEntity>();

      var query = tb.AsEnumerable();

      foreach (var g in query)
      {
        Console.WriteLine("{0} {1} {2} {3}",g.ID,g.Name,g.Age,g.Tel );
      }
      Console.ReadKey();
    }
  }
}

程序的运行如下:

用于数据库连接的DataContext对象成员
DataContext类位于System.Data.Linq.dll程序集中的System.Data.Linq名称空间下。在LINQ to SQL中负责实体对象和数据库之间的数据交换及其他数据库操作,还负责把数据库中的数据映射成实体类的实例。

DataContext是LINQ to SQL操作实体类建立后紧接着需要操作的对象。本文总结其常用函数和属性的作用及常用用法,实体类是上一节的GuestInfo.cs类,数据库也采用上一节的数据库Database1.mdb,下面的示例程序对对象和属性按其功能进行了必要的分组,代码中也有详尽的注释。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.IO;
using System.Data.SqlClient;

namespace DataContext对象成员
{
  /// <summary>
  /// 用于数据库连接的DataContext类成员
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {

      //连接字符串
      string constring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Visual Studio 2010\LINQ_to_SQL\LINQ_To_SQL自定义数据库和实体类\Database1.mdf;Integrated Security=True;User Instance=True";
      //1.构造函数
      DataContext dc = new DataContext(constring);
      //2.GetTable
      Table<GuestInfoEntity> table = dc.GetTable<GuestInfoEntity>();
      var query = table.AsEnumerable();
      foreach(var g in query)
      {
        Console.WriteLine("{0} {1} {2} {3}",g.ID,g.Name,g.Age,g.Tel );
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();

      string fileName = @"E:\Visual Studio 2010\LINQ_to_SQL\LINQ_To_SQL自定义数据库和实体类\Database1.mdf";
      //3.DatabaseExists、DeleteDatabase、CreateDatabase
      if (dc.DatabaseExists())
      {
        Console.WriteLine("数据库文件已经存在.");
        dc.DeleteDatabase();
      }
      dc.CreateDatabase();
      if (dc.DatabaseExists())
      {
        Console.WriteLine("{0} 数据库文件创建成功.",Path.GetFileName(fileName ));
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();
      //4_1.ExecuteCommand 作为LINQ补充直接用SQL指令操作数据库
      dc.ExecuteCommand("insert into tb_GuestInfo(Name,Age,Tel) values({0},{1},{2})","DebugLZQ",25,"198****1336");

      foreach (var r in dc.GetTable<GuestInfoEntity>())
      {
        Console.WriteLine("{0} {1} {2} {3}",r.ID,r.Name,r.Age,r.Tel );
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();
      //4_2.ExecuteQuery 作为LINQ补充直接用SQL指令操作数据库
      var rows= dc.ExecuteQuery<GuestInfoEntity>("select * from tb_GuestInfo");

      foreach (var r in rows)
      {
        Console.WriteLine("{0} {1} {2} {3}", r.ID, r.Name, r.Age, r.Tel);
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();
      //4_3Translate 将DbReader转换为LINQ对象
      string queryString = "select * from tb_GuestInfo";
      SqlConnection connection = new SqlConnection(constring);
      SqlCommand cmd = new SqlCommand(queryString, connection);
      connection.Open();

      var result = dc.Translate<GuestInfoEntity>(cmd.ExecuteReader());//ADO.NET转换LINQ

      foreach (var r in result)
      {
        Console.WriteLine("{0} {1} {2} {3}", r.ID, r.Name, r.Age, r.Tel);
      }
      connection.Close();
      Console.WriteLine("-----------------");
      Console.ReadKey();
      //5.SubmitChanges 应用修改
      var firstrow = (from p in dc.GetTable<GuestInfoEntity>()
            select p).First();
      firstrow.Name =firstrow.Name +"A";

      dc.SubmitChanges();//应用修改

      foreach (var r in dc.GetTable<GuestInfoEntity>() )
      {
        Console.WriteLine("{0} {1} {2} {3}", r.ID, r.Name, r.Age, r.Tel);
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();
      //6.GetChangeSet方法 返回DataContext对象插入、删除、修改过的对象
      ChangeSet cs = dc.GetChangeSet();
      foreach (var r in cs.Updates )
      {
        GuestInfoEntity t = r as GuestInfoEntity;
        Console.WriteLine("{0} {1} {2} {3}", t.ID,t.Name,t.Age,t.Tel );
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();
      //7.Refresh刷新实体对象
      var row1=(from g in dc.GetTable<GuestInfoEntity>() select g).First();
      row1.Age = row1.Age + 5;
      dc.SubmitChanges();
      dc.Refresh(RefreshMode.OverwriteCurrentValues, row1);//

      foreach (var r in dc.GetTable<GuestInfoEntity>())
      {
        Console.WriteLine("{0} {1} {2} {3}", r.ID, r.Name, r.Age, r.Tel);
      }
      Console.WriteLine("7-----------------");
      Console.ReadKey();
      //ChangeConflicts属性 返回DataContext操作数据库时产生的并发冲突合集

      //Transaction属性 设置或返回DataContext跟其他ADO.NET程序共享的事物对象

      //ObjectTrackingEnabled属性 开启或关闭DataContext实体对象的状态跟踪   

      //8.Log属性 返回DataContext产生的SQL命令
      dc.Log = Console.Out;//控制台输出DataContext产生的SQL语句

      foreach (var r in dc.GetTable<GuestInfoEntity>())
      {
        Console.WriteLine("{0} {1} {2} {3}", r.ID, r.Name, r.Age, r.Tel);
      }
      Console.WriteLine("-----------------");
      Console.ReadKey();

    }
  }
}

程序中的注释很详细,不再赘述。

程序的运行结果如下:

操作单一表格的Table<TEntity>类
前面介绍了DataContext类,它可以用来映射和连接数据库,执行SQL命令,跟踪实体对象的状态。

下面介绍Table<TEntity>表示表格记录,它是一个泛型集合类,它的元素就是表格实体对象。它提供一组方法,对元素进行添加删除操作,并可以通过DataContext将这些操作保存到数据库。

表还是前面的那张表,在项目中添加了一个LINQ to SQL类。重点是InsertOnSubmit、DeleteOnSubmit等方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_to_SQL_Table
{
  /// <summary>
  /// 操作单一表格的Table<TEntity>类
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      //1.a.Attach附加实体
      DataClasses1DataContext dc1 = new DataClasses1DataContext();
      tb_GuestInfo guset = new tb_GuestInfo() { Id=1, Name = "DebugLZQ", Age = 35, Tel = "138****8888" };

      dc1.tb_GuestInfo.Attach(guset);//这样的Attach仅仅附加实体,数据库没有更新
      dc1.SubmitChanges();
      //显示附加成功
      foreach (var g in dc1.tb_GuestInfo)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("---------");
      //显示数据库没有更新
      DataClasses1DataContext dc2 = new DataClasses1DataContext();
      foreach (var g in dc2.tb_GuestInfo)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("------------------------");
      Console.ReadKey();

      //2.InsertOnSubmit
      dc2.tb_GuestInfo.InsertOnSubmit(guset);
      dc2.SubmitChanges();

      foreach (var g in dc2.tb_GuestInfo)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("------------------------");
      Console.ReadKey();
      //2b.InsertAllOnSubmit 插入集合
      List<tb_GuestInfo> lst = new List<tb_GuestInfo>()
      {
        new tb_GuestInfo(){ Name="AA", Age=25,Tel="133****3333"},
        new tb_GuestInfo(){ Name="BB", Age=25,Tel="135****5555"}
      };
      dc2.tb_GuestInfo.InsertAllOnSubmit(lst);
      dc2.SubmitChanges();

      foreach (var g in dc2.tb_GuestInfo)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("------------------------");
      Console.ReadKey();
      //
      //3.DeleteOnSubmit
      tb_GuestInfo entity = (from g in dc2.tb_GuestInfo
                  where g.Name == "AA"
                  select g).Single();
      dc2.tb_GuestInfo.DeleteOnSubmit(entity);//
      dc2.SubmitChanges();

      foreach (var g in dc2.tb_GuestInfo)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("------------------------");
      Console.ReadKey();
      //3b.DeleteAllOnSubmit
      IEnumerable<tb_GuestInfo> entitys = from g in dc2.tb_GuestInfo
                        where g.Name == "AA" || g.Name == "BB"
                        select g;
      dc2.tb_GuestInfo.DeleteAllOnSubmit(entitys);
      dc2.SubmitChanges();

      foreach (var g in dc2.tb_GuestInfo)
      {
        Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
      }
      Console.WriteLine("------------------------");
      Console.ReadKey();      

    }
  }
}

程序运行结果如下:

(0)

相关推荐

  • c#操作附加数据库的方法

    本文实例讲述了c#操作附加数据库的方法.分享给大家供大家参考.具体如下: /// <summary> /// 附加数据库 /// </summary> /// <returns></returns> private bool Attachdb() { try { string sql = string.Empty; if (File.Exists(sMDBFile)) { sql = "EXEC sp_attach_db @dbname = '&q

  • Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果(附demo源码下载)

    本文实例讲述了Asp.net(C#)读取数据库并生成JS文件制作首页图片切换效果的方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using System.IO; public partial

  • C#程序连接数据库及读取数据库中字段的简单方法总结

    连接Access数据库 string connStr = @"Data Source=D:\database.mdb; Provider=Microsoft.Jet.OleDb.4.0;"; //数据库连接字符串 OleDbConnection conn = new OleDbConnection(connStr); 连接Oracle数据库 //数据库和客户端在同一台机器上 using System.Data.OracleClient; string connStr = "d

  • C#数据库操作的用法

    由于最近和数据库打交道,需要用C#和SQL Server 2005进行操作,就把近段时间内的最常用的操作做个总结.本人也是第一次用C#操作数据库,所以这三种典型用法对初学者还是挺有帮助的. 以下是我在visual studio 2005上写的一个类(连的是SQL Server 2005),已经过测试通过.里面有3个方法比较典型,源码如下: using System; using System.Collections.Generic; using System.Text; using System

  • C#实例代码之抽奖升级版可以经表格数据导入数据库,抽奖设置,补抽

    我写代码一直是这个风格,废话不多,直接给大家贴代码,现在还是老规矩,具体代码如下所示: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threadi

  • C#连接数据库和更新数据库的方法

    对数据库的操作总体可以分为两类:查询(select)和更新(insert,delete,update).为什么这样来分呢?仔细看看两类的区别,select只是从数据库中将数据拿出来使用,而其余三者都会对数据库的物理数据进行修改.这篇文章将接着阐述更新数据. 更新数据库信息首先是连接数据库,对数据库的更新需要一个对象:OleDbCommand.该对象表示要对数据源执行的SQL语句或存储过程. 这个对象有三个属性:1.CommandText表示要设置命令的文本:2.Connection表示要设置命令

  • C#创建数据库及导入sql脚本的方法

    本文实例讲述了C#创建数据库及导入sql脚本的方法.分享给大家供大家参考,具体如下: C#创建数据库: /// <summary> /// 创建数据库 /// </summary> /// <param name="connStr">连接字符串</param> /// <param name="_strDBName">数据库名称</param> /// <returns></r

  • C#操作数据库中存取图片文件的方法

    本文实例讲述了C#操作数据库中存取图片文件的方法.分享给大家供大家参考.具体如下: private string sqlconnstr = "Data Source=.;Database=db_test;User id=sa;PWD=123456"; /*功能:把一种图片插入到数据库中 *返回值:无 */ void InsertImageToDB() { //将需要存储的图片读取为数据流 FileStream fs = new FileStream(@"D:/Bear.jpg

  • C#编程实现连接SQL SERVER数据库实例详解

    本文实例讲述了C#编程实现连接SQL SERVER数据库.分享给大家供大家参考,具体如下: 首先,在SQL SEVER里建立一个名为"Exercise"的数据库名,在该数据库下建立一张名为"lianxi"的表.好,现在开始写代码. 在FORM1里拖一个DATAGIRDVIEW用于显示表,在放一个BUTTON用于执行操作.加入命名空间 复制代码 代码如下: using system.data.sqlclient; private void button1_Click(

  • C#操作LINQ to SQL组件进行数据库建模的基本教程

    建立实体类 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等.其中最方便的就是LINQ to SQL设计器. 1.使用LINQ to SQL设计器建立实体类       

  • 颜值与实用性并存的数据库建模工具Chiner教程

    目录 一.chiner介绍 二.值得关注的功能点 2.1.兼容各种格式的数据建模文件 2.2.支持多数据库.代码生成 2.3.支持逻辑视图与物理视图设计 2.4.自动生成数据库文档 三.总结 一.chiner介绍 在chiner出现之前进行数据库建模设计的时候,大部分时间使用的是PowerDesigner.说实话基本上是偷偷的用,因为大家都知道PD是收费软件,到处和国内厂商打官司.不仅如此,PowerDesigner古老守旧的的设计界面已经快让让我忍不了了,一直想寻找一款PD的替代品. 最近看同

  • sql server 2005数据库备份还原图文教程

    首先.点击桌面的"SQL Server Management Studio"打开,sql2005的管理器,点击"连接"登录,如图: 一.新建数据库 1.新建数据库 右键点击"数据库"--"新建数据库",如图: MSSQL2005备份还原图文教程 填写数据库名,如mydata,选择数据库保存路径,一般可以保持默认地址,点击"确定". 2.新建用户 右键点击"安全性"--"登录名&

  • SQL Server 2014 数据库中文版安装图文教程

    SQL Server 2014三大新特性:集成内存OLTP.BI和混合云搭建,那么记录一下我们的安装过程及配置. 软件环境准备 SQL Server 2014版支持的操作系统有:Windows Server 2008.Windows Server 2008 R2.Windows Server 2012.Windows Server 2012 R2.标准版还支持 Windows 7.Windows 8.Windows 8.1 操作系统. 安装 .Net Framework 3.5 sp1 如果本机

  • asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析

    本文实例讲述了asp.net使用LINQ to SQL连接数据库及SQL操作语句用法.分享给大家供大家参考,具体如下: LINQ简介 LINQ:语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据. LINQ是一门查询语言,和SQL一样,通过一些关键字的组合,实现最终的查询. LINQ的分类 LINQ to Object LINQ to XML LIN

  • SQL Server附加数据库报错无法打开物理文件,操作系统错误5的图文解决教程

    问题描述: 附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf和ldf文件,本演示以ldf为例. 1.点击文件右键属性-->安全-->编辑 2.编辑-->添加 3.添加-->高级 4.高级-->立即查找-->搜索结果中找到-->Everyone-->确定-->确定 5.确定-->默认选中的Everyone用户-->

  • Python操作Sql Server 2008数据库的方法详解

    本文实例讲述了Python操作Sql Server 2008数据库的方法.分享给大家供大家参考,具体如下: 最近由于公司的一个项目需要,需要使用Sql Server 2008数据库,开发语言使用Python,并基于windows平台上的Wing IDE4.0进行. 之前并未使用过Sql Server数据库,这次也当作一次练手,并把这次数据库前期开发过程中遇到的一些问题进行记录. 一.关于pyodbc库和pymssql库的选择 在使用python语言进行开发之前,需要确定使用哪种第三方的数据库操作

  • SQL SERVER 2008数据库引擎详细介绍

    SQL Server 的数据库引擎组件是用于存储.处理数据和保证数据安全的核心服务.数据库引擎提供受控的访问和快速事务处理,以满足企业中要求极高.大量使用数据的应用程序的要求. SQL Server 支持在同一台计算机上最多存在 50 个数据库引擎实例.对于本地安装,必须以管理员身份运行安装程序.如果从远程共享安装 SQL Server,则必须使用对远程共享具有读取和执行权限的域帐户. 高可用性解决方案概述 高可用性解决方案可减少硬件或软件故障造成的影响,保持应用程序的可用性,尽可能地减少用户所

  • 通过SQL Server 2008数据库复制实现数据库同步备份

    SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用.它是一种优于文件备份的数据库备份解决方案. 在选择数据库同步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制.数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜像

  • linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)

    如何从真正意义上做到延迟加载,即一次只从数据库中取我们需要的用到的那部分数据呢.通过研究,有了下面的方法: 首先,我们要新建一个静态类,用于存放多条件组合查询的各种组合,比如or,And这些等等.代码如下: 复制代码 代码如下: using System.Linq.Expressions; public static class PredicateExtensionses { public static Expression<Func<T, bool>> True<T>

随机推荐