完整测试代码:
/// <summary>
/// 分析msSqlServer文件*.sql
/// </summary>
/// <param name="m_SqlFilePath">文件路径</param>
/// <returns></returns>
private string GetExcuteSql(string m_SqlFilePath)
{
string m_ReturnStr="";
StreamReader sr = File.OpenText(m_SqlFilePath);
string s = sr.ReadLine();
StringBuilder sb = new StringBuilder();
while (s != null)
{
if(s.Replace(" ","")=="GO")
sb.Append(";");
else
sb.Append(s);
s = sr.ReadLine();
}
m_ReturnStr = sb.ToString();
sr.Close();
return m_ReturnStr; }
/// <summary>
/// 执行一个*.sql文件.注意该操作仅仅适合msSqlServer
/// </summary>
/// <param name="m_Conn">数据连接</param>
/// <param name="m_SqlFilePath">文件路径</param>
private void ExcuteSqlFile(OleDbConnection m_Conn,string m_SqlFilePath)
{
try
{
OleDbCommand m_comm = m_Conn.CreateCommand();
m_comm.CommandText = GetExcuteSql(m_SqlFilePath);
m_comm.ExecuteNonQuery();
MessageBox.Show(m_SqlFilePath+" 文件成功导入");
}catch(OleDbException error)
{
MessageBox.Show(error.Message.ToString());
}
}
/// <summary>
/// 测试
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, System.EventArgs e)
{
OleDbConnection m_Conn;
try
{
m_Conn = new OleDbConnection("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=tempdb;Data Source=NETBEE5");
m_Conn.Open();
}catch(OleDbException error)
{
MessageBox.Show(error.Message.ToString());
return;
}
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Open text file" ;
dlg.InitialDirectory = @"c:\" ;
dlg.Filter = "sql files (*.sql)|*.sql" ;
if(dlg.ShowDialog() == DialogResult.OK)
{
ExcuteSqlFile(m_Conn,dlg.FileName);
} }
/// <summary>
/// 分析msSqlServer文件*.sql
/// </summary>
/// <param name="m_SqlFilePath">文件路径</param>
/// <returns></returns>
private string GetExcuteSql(string m_SqlFilePath)
{
string m_ReturnStr="";
StreamReader sr = File.OpenText(m_SqlFilePath);
string s = sr.ReadLine();
StringBuilder sb = new StringBuilder();
while (s != null)
{
if(s.Replace(" ","")=="GO")
sb.Append(";");
else
sb.Append(s);
s = sr.ReadLine();
}
m_ReturnStr = sb.ToString();
sr.Close();
return m_ReturnStr; }
/// <summary>
/// 执行一个*.sql文件.注意该操作仅仅适合msSqlServer
/// </summary>
/// <param name="m_Conn">数据连接</param>
/// <param name="m_SqlFilePath">文件路径</param>
private void ExcuteSqlFile(OleDbConnection m_Conn,string m_SqlFilePath)
{
try
{
OleDbCommand m_comm = m_Conn.CreateCommand();
m_comm.CommandText = GetExcuteSql(m_SqlFilePath);
m_comm.ExecuteNonQuery();
MessageBox.Show(m_SqlFilePath+" 文件成功导入");
}catch(OleDbException error)
{
MessageBox.Show(error.Message.ToString());
}
}
/// <summary>
/// 测试
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, System.EventArgs e)
{
OleDbConnection m_Conn;
try
{
m_Conn = new OleDbConnection("Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=tempdb;Data Source=NETBEE5");
m_Conn.Open();
}catch(OleDbException error)
{
MessageBox.Show(error.Message.ToString());
return;
}
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Open text file" ;
dlg.InitialDirectory = @"c:\" ;
dlg.Filter = "sql files (*.sql)|*.sql" ;
if(dlg.ShowDialog() == DialogResult.OK)
{
ExcuteSqlFile(m_Conn,dlg.FileName);
} }
private string GetExcuteSql(string m_SqlFilePath)
{
string m_ReturnStr="";
StreamReader sr = File.OpenText(m_SqlFilePath);
string s = sr.ReadLine();
StringBuilder sb = new StringBuilder();
while (s != null)
{
if(s.Replace(" ","")=="GO")
sb.Append(";");
else
sb.Append(s+" ");
s = sr.ReadLine();
}
m_ReturnStr = sb.ToString();
sr.Close();
return m_ReturnStr;
}楼主,我是一起执行.创建视图是要这些基本表创建后,创建方能有效.如果分成2个文件,将创建表和创建视图分开.分别执行.就没有问题了.我测试过