Skip to main content

Execute *.sql with .NET

Do you ever want to execute slq statements at once. I mean SQL Script file.

Normally we are using like following commands to Execute Single SQL statement.

SqlCommand cmd = new SqlCommand(sSQL, conn);
cmd.ExecuteNonQuery();
cmd.Dispose();


but this way you can execute one command at a time. We cannot execute SQL script using above command.

Normal SQL Script Like this.

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK__titleauth__au_id__0519C6AF]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[titleauthor] DROP CONSTRAINT FK__titleauth__au_id__0519C6AF
GO

CREATE TABLE [dbo].[authors] (
[au_id] [id] NOT NULL ,
[au_lname] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[au_fname] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[phone] [char] (12) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[address] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[city] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[state] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[zip] [char] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[contract] [bit] NOT NULL
) ON [PRIMARY]
GO


When executing above script SqlCommand gives an exception because it does not know about "GO" like statements.


But simply we can execute SQL Script by following by removing GO keyword.

Example:

This is not a complete example. But i explain you important lines.
Here i assumed you have taken Whole SQL Script into txtSqlScript.Text

i have created two string arrays. one to hold "GO" keyword and one to hold SQL Statments taken from Split function.

String.Split is a function that split a single string into multiple strings by a seperator.
The seperator is the "GO"

After finished Split process i have executes each statement by cmd.ExecuteNonQuery();


string
[] removeWord ={"GO"};
string[] statements;
statements = txtSqlScript.Text.Split(removeWord,StringSplitOptions.RemoveEmptyEntries);


foreach
(string singleStatement in statements)
{
MessageBox.Show(
singleStatement );
SqlCommand cmd = new SqlCommand(sSQL, conn, t);
Console.WriteLine(
singleStatement);
cmd.ExecuteNonQuery();
cmd.Dispose();
}

May be there are More ways. But I did this by my self. Im happy with this.
Leave a Comment

Comments

  1. Your query might have the characters 'GO' in it. For example, a table could be named GOLF_SCORES.

    This would be an improvement:

    string[] removeWord ={"\r\nGO\r\n"};

    ReplyDelete

Post a Comment

Popular posts from this blog

How To Disable Export Button In Crystal Report When you are taking crystal report printouts through a program, such as program written using vb6. you might have a problem how to disable Export button in print preview. All you have to change following property to false or Uncheck the Export option in Property Pages. You CR.WindowShowExportBtn = False Crystal Report Object in Visual Basic 6. (CR is refer to Crystal Report Object ) You can go to Property Pages by right click and choose Properties on Crystal Report Object After you done those things you crystal Report print preview will showing like follows. I was face to above problem. We implemented a software program which is written using vb6. Cashier can take daily sale print out. before printing it is showing a preview to the user. So when the time pass user click export button and saved that report as a excel file. Then he modified the values and took printout to the management. That gives Security problem to the program a

Magento Generate Google Sitemap using Cron

I had a problem with generating the Google sitemap using cron job. To do that you can simply change following database value. SELECT * FROM core_config_data WHERE path = 'crontab/jobs/sitemap_generate/schedule/cron_expr' Change the value as you set time in cron jobs. EX: Generate the Sitemap for every 5 minutes value = */5 * * * * That's it. Now you have to worry about cron is working or not. Just type following in your browser and hit enter. http://youresite.com/cron.php
Git script which shows little bit advanced status. Save with Preferred file name in /usr/local/bin/XX branch="" branches="git branch --list" ESC_SEQ="\x1b[" COL_RESET=$ESC_SEQ"39;49;00m" COL_RED=$ESC_SEQ"31;01m" while read -r branch; do clean_branch_name=${branch//\*\ /} description=`git config branch.$clean_branch_name.description` if [ "${branch::1}" == "*" ]; then printf "$COL_RED$branch$COL_RESET $description \n" else printf " $branch $description\n" fi done <<< "$branches" git status Use the following command to add a description to your local branches. git branch --edit-description