大家好 我在文本文件中有一个sql脚本,如下所示
create view [dbo].[budget_change-22]
as select projectname, projectnumber,location, client
FROM OPENROWSET('SQLNCLI', 'SERVER=AABB1089\abcWORKSS_STO;UID=abcworkss;PWD=abcdef,
'SET NOCOUNT ON;SET FMTONLY OFF;EXEC abcworks_sto..SP_Budget_444 38') AS Workchanged_444
Go
现在在上面的脚本中我必须选择服务器值(AABB1089 \ abcWORKSS_STO),UID值(abcwork),Pwd值(abcdef),以便我可以在文本框中替换并编辑它们以创建具有不同的新文本文件名。
答案 0 :(得分:0)
这取决于您的UI使用的框架,但是当您标记c#时,我将假设winforms。
这样做是否可行?将SQL放在一个文件中,但不要填充参数,而是放置可以在代码中使用的持有者,以添加来自文本框的值,例如:
create view [dbo].[budget_change-22]
as select projectname, projectnumber,location, client
FROM OPENROWSET('SQLNCLI', 'SERVER={0};UID={1};PWD={2},
'SET NOCOUNT ON;SET FMTONLY OFF;EXEC abcworks_sto..SP_Budget_444 38') AS Workchanged_444
Go
注意代码中的'{x}',在文件中读取并使用string.Format根据需要替换{x}值。 Psuedo代码:
// Read in the template file
string fileSql = System.File.IO.ReadAllText(pathToYourTemplateFile)
// Replace the place holders with your values (sample assumes
// they are coming from textboxes on the UI
string formattedSql = string.Format(fileSql,
txtServerName.Text,
txtUid.Text,
txtPassword.Text);
// Write out the new file
System.IO.File.WriteAllText(formattedSql, pathToYourNewFile);
如果由于某种原因你不能沿着模板文件的路线走下去,那么你可以使用string.Replace()例如
// Read in the template file
string fileSql = System.File.IO.ReadAllText(pathToYourTemplateFile)
// Replace the values with the input from the UI
fileSql.Replace("AABB1089\abcWORKSS_STO", txtServer.Text)
// ... same for uid ...
// ... same for pwd ...
// Write out the new file
System.IO.File.WriteAllText(fileSql , pathToYourNewFile);