将数据库 sql server 2008 链接到 Visual Studio 2010
Posted
技术标签:
【中文标题】将数据库 sql server 2008 链接到 Visual Studio 2010【英文标题】:Linked database sql server 2008 to visual studio 2010 【发布时间】:2017-12-29 17:14:23 【问题描述】:我正在做一个可以管理电子元件数量的软件。我的软件链接到第一个 DB (T_importReel),当工厂收到所有新卷轴组件时,它将包含它们。使用组件的机器正在计算它在每个卷轴中使用了多少,并在自己的数据库 (SiplaceSetupCenter) 中标记了计数。我为每个卷轴使用唯一 ID,因此 T_importReel 和 SiplaceSetupCenter 使用该唯一 ID 来区分每个线轴。基本上,我在两个数据库中有两个相同的列。
现在我想用一个简单的 SQL 请求来链接这两个数据库。这应该很简单:对于两个 DB 之间数量不同的每个唯一 ID,T_importReel 会针对相关的唯一 ID 更改其数量。
但是当我尝试这样做时,我的软件没有访问 DB_center... 如何使我的软件能够访问 SetUpCenter?我该怎么做才能更新 T_importreels? 提前谢谢你。
private void BT_croiserlesdonnées_Click(object sender, EventArgs e)
SqlConnection con = new SqlConnection("Server=SIPLACESERVER;Database=SiplaceSetupCenter;User=**;Password=****;");
con.Open();
// using (SqlCommand command = new SqlCommand(
// "SELECT packagingunitid,Quantity FROM PackagingUnit",
// con))
//using (SqlDataReader reader = command.ExecuteReader())
//
// while (reader.Read())
//
// for (int i = 0; i < reader.FieldCount; i++)
//
// Console.WriteLine(reader.GetValue(i));
//
// Console.WriteLine();
//
//
string queryString =
"Select Quantity FROM PackagingUnit, T_ImportReels WHERE PackagingUnit.id = T_ImportReels.id";
SqlCommand command = new SqlCommand(
queryString, con);
SqlDataReader reader = command.ExecuteReader();
try
while (reader.Read())
Console.WriteLine(String.Format("0, 1",
reader[0], reader[1]));
finally
// Always call Close when done reading.
reader.Close();
//_siplaceSetupCenter = new SiplaceSetupCenterEntities();
//string queryString = @"SELECT * FROM PackagingUnit";
//using (SiplaceSetupCenterEntities context = new SiplaceSetupCenterEntities())
//
// //ObjectQuery<PackagingUnit> contactQuery =_siplaceSetupCenter.CreateQuery<PackagingUnit>(queryString);
// // new ObjectParameter("fn", "Frances"));
// Console.WriteLine("on y go"); Console.WriteLine("on y go"); Console.WriteLine("on y go"); Console.WriteLine("on y go");
// var tableresult = _siplaceSetupCenter.PackagingUnit.FirstOrDefault(id => id.PackagingUnitId == "100717132736");
//var contactQuery = from contact in context.PackagingUnit
// where contact.PackagingUnitId == "200717100643"
// select contact;
//// Iterate through the collection of Contact items.
//foreach (PackagingUnit result in contactQuery)
// Console.WriteLine("First Name: 0, Last Name: 1",result.PackagingUnitId, result.Quantity);
//Console.WriteLine(table_result.Count); Console.WriteLine(table_result.Count); Console.WriteLine(table_result.Count); Console.WriteLine(table_result.Count);
//foreach (var value in table_result)
//
// Console.WriteLine(value); Console.WriteLine(value); Console.WriteLine(value); Console.WriteLine(value);
// Console.WriteLine("a"); Console.WriteLine("a"); Console.WriteLine("a"); Console.WriteLine("a");
//
//string dataid = tableresult.PackagingUnitId;
//Console.WriteLine(dataid);
我
【问题讨论】:
假设您的数据库位于不同的服务器上,如果它们位于同一服务器上,您正在寻找链接服务器功能 (docs.microsoft.com/en-us/sql/relational-databases/…),请参阅:mssqltips.com/sqlservertip/1095/sql-server-four-part-naming 【参考方案1】:我不知道它对你有什么帮助? 您可以建立两个连接,每个连接到每个数据库,然后从两个 Db 中选择您的数据。在这种情况下,您有 2 个 DataTable/SqlDataReader 对象。现在,您可以逐行比较这些 Datatables/SqlDataReader,或者将它们组合成一个单独的 datatable/SqlDataReader,或者相互更新。
【讨论】:
我已经完成了两个连接,用于 T_importreels 的 model1.edmx 和用于 SiplaceSetupcenter 的 model2.edmx。在每个模型中,我都有需要的表和列。但我不知道为什么我无法访问 Siplacesetupcenter。我像第一个数据库一样尝试:_Siplace= new DB_SiplaceSetupCenterEntities(); var enregistrement = _Siplace.PackagingUnit.First(variable => variable.PackagingUnitId== "240717103125"; dataFour = enregistrement.PackagingUnitId; 但即使该唯一 ID 是数据库,它也不会返回任何内容。 您是从 2 个连接变量中使用,还是从一个变量中使用并且只更改 ConnectionString? 我评论中的代码行不需要任何连接字符串,它只是这里的 UniqueID 导致问题,我刚刚测试了 variable.Quantity != 500 并找到了引用。所以,我不明白......而且我将需要执行 sql 请求以在 DB 之间交叉数据。 试试这个:选择 PackagingUnit.Quantity 作为 pQuantity,T_ImportReels.Quantity 作为 tQuantity From ....【参考方案2】:Sql Server 的名称应该是这样的 SERVERNAME\INSTANCENAME。但是您的服务器名称是:SIPLACESERVER/SIPLACE_2012EX。
如果您在服务器名称中使用“\”字符,则在连接字符串中将其更改为“\\”。
我的意思是将SERVERNAME\INSTANCENAME
更改为SERVERNAME\\INSTANCENAME
。
【讨论】:
以上是关于将数据库 sql server 2008 链接到 Visual Studio 2010的主要内容,如果未能解决你的问题,请参考以下文章
将 SQL Server 2008 r2 降级到 SQL Server 2008
将 SQL Server 2008 降级到 SQL Server 2005
访问 db 和 sql server 2008 表达我如何链接它们[关闭]
将sybase存储过程作为链接服务器过程sql server 2008执行
将数据库从 SQL Server 2012 转移到 SQL Server 2008 [关闭]
如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)