我有一个批处理文件,我在运行时从我的C#代码运行以创建一个新的数据库。
我提供了:
并在创建db的批处理文件中执行sql文件,这是我的批处理文件:
sqlcmd -S %1 -U %2 -P %3 -i SQLScript.sql
我想知道如果在尝试创建数据库时遇到错误,我如何通知我的代码。
我可以将值返回给我的c#代码吗?
我正在使用Process.start()
方法来调用我的批处理文件。
我尝试使用-E -b
,然后给出错误级别,但这不起作用。
答案 0 :(得分:1)
您可以尝试使用SqlCommand直接在C#程序中运行脚本。
喜欢这个
SqlConnection myConn = new SqlConnection ("Server=localhost;Integrated security=SSPI;database=master");
string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
"(NAME = MyDatabase_Data, " +
"FILENAME = 'C:\\MyDatabaseData.mdf', " +
"SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
"LOG ON (NAME = MyDatabase_Log, " +
"FILENAME = 'C:\\MyDatabaseLog.ldf', " +
"SIZE = 1MB, " +
"MAXSIZE = 5MB, " +
"FILEGROWTH = 10%)";
SqlCommand myCommand = new SqlCommand(str, myConn);
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
MessageBox.Show("DataBase is Created Successfully", "MyProgram",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString(), "MyProgram", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
finally
{
if (myConn.State == ConnectionState.Open)
{
myConn.Close();
}
如果您需要从外部文件获取脚本,请更改为:
string str = System.IO.File.ReadAllText("SQLScript.sql");