using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.IO;
using System.Data.SqlClient;
using System.Configuration.Assemblies;
namespace OperationSQL
{
class Operation
{
public static ArrayList Getarraylist(string targetdir, string dbname) // 静态函数,输入两个字符串路径和数据库名,返回一个arraylist里面的SQL语句
{
ArrayList sqllist = new ArrayList(); // 新建集合
System.IO.FileInfo FileInfo = new System.IO.FileInfo(targetdir + "DATABASE.sql"); // new一个文件信息的对象
string path = System.IO.Path.Combine(targetdir, "DATABASE.sql"); // 获得路径
string commandText = ""; // 定义命令文本 为一个空的值
string varLine = ""; // 定义一个各种数据类型的行内容 为一个空值
StreamReader sr = new StreamReader(path, System.Text.Encoding.Default); // 定义数据读取对象
while (sr.Peek() > -1) // 判断读取文件中的行,是否直到到达文件末尾
{
varLine = sr.ReadLine(); // 读取一行
varLine = varLine.Replace("[DATABASE]", "[" + dbname + "]"); // 随时更换新的数据库名字
if (varLine == "")
{
continue;
}
if (varLine != "GO" && varLine != "go" && varLine.Substring(0, 1) != "/") // 判断是不是GO 或者/
{
commandText += varLine; // 再往commandTex里面加个字符串
commandText += "\r\n"; // 回车换行
}
else
{
sqllist.Add(commandText); // 把拼接好的commandText集合添加到sqllist里面
commandText = ""; // 清空中转用的commandText里面的内容
}
}
sr.Close(); // 执行完成以后关闭
return sqllist; // 返回sqllist
}
public static void ExcuteSql(SqlConnection connectstring, ArrayList sql) // 传入数据库的连接对象和SQL语句列表 并且执行
{
SqlTransaction varTrans = connectstring.BeginTransaction(); // 开始事务对象
SqlCommand cmd = new SqlCommand(); // new一个新的命令 新建命令
cmd.Connection = connectstring; // 数据库连接赋值
cmd.Transaction = varTrans; //命令事物赋值
foreach (string sqlstring in sql) // 遍历
{
if (sqlstring != null) //在确保一便 列表里面不为空
{
cmd.CommandText = sqlstring; // sql命令赋值
cmd.ExecuteNonQuery(); // sql指令执行
}
}
varTrans.Commit(); // 如果全部执行成功不报错则提交
}
}
}
using System;
namespace OperationSQL
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("已经完成代码的更新");
}
}
}