I want to change a variable which is in my SQL Script c:\\script.sql
under @db
by the user browsing to a different path.
SQL script:
DECLARE @Table TABLE
(
BackupName NVARCHAR (128) ,
BackupDescription NVARCHAR (255) ,
BackupType SMALLINT ,
ExpirationDate DATETIME ,
Compressed BIT ,
Position SMALLINT ,
DeviceType TINYINT ,
UserName NVARCHAR (128) ,
ServerName NVARCHAR (128) ,
DatabaseName NVARCHAR (128) ,
DatabaseVersion INT ,
DatabaseCreationDate DATETIME ,
BackupSize NUMERIC (20, 0) ,
FirstLSN NUMERIC (25, 0) ,
LastLSN NUMERIC (25, 0) ,
CheckpointLSN NUMERIC (25, 0) ,
DatabaseBackupLSN NUMERIC (25, 0) ,
BackupStartDate DATETIME ,
BackupFinishDate DATETIME ,
SortOrder SMALLINT ,
CodePage SMALLINT ,
UnicodeLocaleId INT ,
UnicodeComparisonStyle INT ,
CompatibilityLevel TINYINT ,
SoftwareVendorId INT ,
SoftwareVersionMajor INT ,
SoftwareVersionMinor INT ,
SoftwareVersionBuild INT ,
MachineName NVARCHAR (128) ,
Flags INT ,
BindingID UNIQUEIDENTIFIER,
RecoveryForkID UNIQUEIDENTIFIER,
Collation NVARCHAR (128) ,
FamilyGUID UNIQUEIDENTIFIER,
HasBulkLoggedData BIT ,
IsSnapshot BIT ,
IsReadOnly BIT ,
IsSingleUser BIT ,
HasBackupChecksums BIT ,
IsDamaged BIT ,
BeginsLogChain BIT ,
HasIncompleteMetaData BIT ,
IsForceOffline BIT ,
IsCopyOnly BIT ,
FirstRecoveryForkID UNIQUEIDENTIFIER,
ForkPointLSN NUMERIC (25, 0) NULL,
RecoveryModel NVARCHAR (60) ,
DifferentialBaseLSN NUMERIC (25, 0) NULL,
DifferentialBaseGUID UNIQUEIDENTIFIER,
BackupTypeDescription NVARCHAR (60) ,
BackupSetGUID UNIQUEIDENTIFIER NULL,
CompressedBackupSize NUMERIC (20, 0)
);
INSERT INTO @table
EXECUTE ('RESTORE HEADERONLY FROM DISK = '@db'');
SELECT ServerName,
DatabaseName,
SoftwareVersionMajor,
SoftwareVersionMinor
FROM @table;
I want the @DB to = my variable in C#
C# code:
public void PullData()
{
string connString = @"server=.\sqlserver2012; database = master; user =sam; pwd =sam; Connection Timeout = 15; MultipleActiveResultSets = true";
string script = File.ReadAllText(@"C:\Temp Table.sql");
string db = tb_bak_location.Text;
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(script, conn);
try
{
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(datatable);
dataGridView1.DataSource = datatable;
da.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
conn.Close();
}
}
I just want to be able to read the SQL script from that location then implement my db
variable when I run function.
Hope this makes sense
Thanks
string db = tb_bak_location.Text;
string script = File.ReadAllText(@"C:\Temp Table.sql").Replace("@db", db);
To change the parameter by some external value that you would like, you can assign value to parameter in your code-behind. After
SqlCommand cmd = new SqlCommand(script, conn);
Use
cmd.Parameters.AddWithValue(ParamName, Value);
Also consider creating your SqlConnection and SqlCommand in the using block, for automatic handling closing and opening the connections.
Just google: Adding parameters to sql script
Example link: http://www.csharp-station.com/Tutorial/AdoDotNet/Lesson06
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.