我想用c#获取数据库脚本,请高手指点

电脑不需要休息吗? 2008-06-18 02:36:51
我想用c#获取已经存在的数据库的创建脚本,数据表的创建脚本,存储过程的创建脚本,......
请高手指点!
小弟感激不尽!!!!!!!!!!
...全文
232 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
感谢各位大哥帮忙!问题已经解决!结帖给分!!!!
注册失败 2008-06-20
  • 打赏
  • 举报
回复
mark and study
jinjazz 2008-06-20
  • 打赏
  • 举报
回复
参考
http://topic.csdn.net/u/20080616/10/123ecf9b-e0de-4a16-94b9-091ebd60de5c.html
贫僧又回来了 2008-06-20
  • 打赏
  • 举报
回复

直接写成个方法好了!下面是可以直接导出多个表的建表脚本!仅供参考!

private string gettablescript(string server, string user, string pwd, string table, string database)
{
SQLDMO.SQLServer oServer = new SQLDMO.SQLServer();
oServer.Connect(""+server+"", ""+user+"", ""+pwd+"");
SQLDMO._Database mydb = oServer.Databases.Item(""+database+"", "owner");
SQLDMO._Table myTable = mydb.Tables.Item(""+table+"", "dbo");
string s = myTable.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default, null, null, SQLDMO.SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_Default);
oServer.DisConnect();
return s;
}
/// <summary>
/// 导出建表脚本
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
this.saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
this.saveFileDialog1.ShowDialog();
if (this.saveFileDialog1.FileName.ToString() == "")
{
MessageBox.Show("未选择导出文件路径");
}
else
{
try
{
using (StreamWriter sw = new StreamWriter(this.saveFileDialog1.FileName.ToString()))
{
for (int j = 0; j < checkedListBox1.CheckedItems.Count; j++)
{
string ss = gettablescript(this.comboBox1.SelectedItem.ToString(), this.textBox2.Text, this.textBox1.Text, this.checkedListBox1.CheckedItems[j].ToString(), this.comboBox2.SelectedItem.ToString());
sw.WriteLine(ss);
MessageBox.Show("导出表脚本成功");
}
}
}
catch (Exception s)
{
MessageBox.Show(s.Message);
}
}
}
fsy123456accp 2008-06-20
  • 打赏
  • 举报
回复
127.0.0.1
改为服务器名看看
  • 打赏
  • 举报
回复
oServer.Connect("127.0.0.1", "sa", "sapassword");
这一行出问题了,提示"无效连接"??
zzyhuian06142 2008-06-18
  • 打赏
  • 举报
回复
SQLDMO是分布式管理对象的意思
他的文件路径在C:\Program Files\Microsoft SQL Server\80\Tools\Binn
引用它的话就是右键项目---添加引用--浏览---C:\Program Files\Microsoft SQL Server\80\Tools\Binn---打开---确定
然后再using SQLDMO;这样就OK了
  • 打赏
  • 举报
回复
非常感谢各位大哥指点,无奈小弟还是不甚了解.请详细解释一下好吗?
比如SQLDMO是什么类?
zzyhuian06142 2008-06-18
  • 打赏
  • 举报
回复
把owner改成dbo
shxmh 2008-06-18
  • 打赏
  • 举报
回复
楼上的应该是正解
要注意必须使用管理员身份登录,才能获取存储过程
zzyhuian06142 2008-06-18
  • 打赏
  • 举报
回复
用SqlDMO

SQLDMO.SQLServer oServer = new SQLDMO.SQLServer();
oServer.Connect("127.0.0.1", "sa", "sapassword");
SQLDMO._Database mydb = oServer.Databases.Item("northwind", "owner");
SQLDMO._Table myTable = mydb.Tables.Item("Categories", "dbo");
string s = myTable.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default,null,null, SQLDMO.SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_Default);
oServer.DisConnect();
Source.Text = s

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧