【发布时间】:2017-11-01 03:28:13
【问题描述】:
我正在使用 c# 编写一个程序,其中的布局如下图所示:
该程序的目的是在 SQL Server 中执行数据归档。如果我选择“创建表”,它将在我的数据库中生成新表(应该按顺序生成大约 40 个表),这些表的表结构(列、约束、触发器等)也与同一数据库中的原始表相似。这是如何工作的,我将在 c# 中执行 SQL 脚本并调用它们(所有 40 个脚本)来创建表。
现在,我添加了另一个按钮“传输数据”,它将在旧数据中选择特定数据(基于日期)并将它们传输到我创建的新表中。我将使用查询 Insert Into....SELECT from 来传输数据。
我的问题是我应该创建用于传输数据的 sql 脚本并在 c# 中执行它们还是只是将 SQL 查询放在我的 c# 代码中?
如果我使用 SQL 脚本,我应该将它们拆分为 40 个脚本还是将所有查询放在 1 个脚本中?我知道如果我将所有内容都放在一个脚本中,就好像发生错误一样,会很乏味,很难追踪问题的根源。
下面是 sql 查询的示例:
SET IDENTITY_INSERT Kiosk_Log_New ON
INSERT INTO Kiosk_Log_New(LOGID,
logAPPID,
logLOGTID,
logGUID,
logOriginator,
logReference,
logAssemblyName,
logFunctionName,
logMessage,
logException,
CreatedBy,
CreatedDate)
SELECT LOGID,
logAPPID,
logLOGTID,
logGUID,
logOriginator,
logReference,
logAssemblyName,
logFunctionName,
logMessage,
logException,
CreatedBy,
CreatedDate FROM Kiosk_Log
WHERE CreatedDate BETWEEN '2015-01-01' AND GETDATE()
编辑:由于许多建议的存储过程是最好的选择,这将是我的创建表脚本:
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
/* open sql connection to execute SQL script: PromotionEvent_New */
try
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
FileInfo file = new FileInfo("C:\\Users\\88106221\\Documents\\SQL Server Management Studio\\PromotionEvent_New.sql");
string script = file.OpenText().ReadToEnd();
Server server = new Server(new ServerConnection(con));
server.ConnectionContext.ExecuteNonQuery(script);
Display("PromotionEvent_New table has been created successfully");
con.Close();
}
}
catch(Exception ex)
{
textBox1.AppendText(string.Format("{0}", Environment.NewLine));
textBox1.AppendText(string.Format("{0} MainPage_Load() exception - {1}{2}", _strThisAppName, ex.Message, Environment.NewLine));
Display(ex.Message + "PromotionEvent_New could not be created");
textBox1.AppendText(string.Format("{0}", Environment.NewLine));
Debug.WriteLine(string.Format("{0} MainPage_Load() exception - {1}", _strThisAppName, ex.Message));
}
【问题讨论】:
-
这个问题解决了还是需要帮助?
-
我需要帮助。请
-
基本上,现在我必须创建一个按钮。单击该按钮时,它将读取一个 SQL 脚本。到目前为止,我已经完成了那部分。在脚本内部,它有大约 40 个行数查询。但这无论如何都不是问题。问题是我想点击按钮,然后它会执行那个sql脚本并在文本显示框中实时显示ROW COUNT(见我发布的线程快照)。
-
所以文本框上的结果将是:表 A:200 行,表 B,342 行等。就像在 SQL Server 中运行计数查询时如何获取结果一样.但我不知道如何实现它。请指教。
-
我还是卡住了
标签: c# sql-server ssms