/// <summary> /// 获取指定数据库数据表列表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { //CurrDb = sr.Databases[ds.Tables["db"].Rows[Result.CurrentRow.Index]["Name"].ToString()]; try { sr.Connect(this.listBox1.SelectedItem.ToString(), "sa", "sa"); } catch { } //创建一个DataTable if (!ds.Tables.Contains("dt")) { DataTable tmp = new DataTable("dt"); ds.Tables.Add(tmp); tmp.Columns.Add("dbName"); tmp.Columns.Add("Name"); tmp.Columns.Add("Owner"); tmp.Columns.Add("CreatDate"); tmp.Columns.Add("PrimaryKey"); } DataTable dt = ds.Tables["dt"]; dt.Clear(); for(int j=0;j<sr.Databases.Count;j++) { if(sr.Databases.Item(j+1,"dbo").Name == ds.Tables["db"].Rows[this.dataGridView1.CurrentRow.Index]["Name"].ToString()) { SQLDMO._Database db= sr.Databases.Item(j+1,"dbo"); CurrDb = db; for(int i=0;i<db.Tables.Count;i++) { if (!db.SystemObject) { DataRow dr = dt.NewRow(); //表所属数据库 dr["DbName"] = db.Name; //获取表名 dr["Name"] = db.Tables.Item(i + 1, "dbo").Name; //获取表的所有者 dr["Owner"] = db.Tables.Item(i + 1, "dbo").Owner; //获取表的创建日期 dr["CreatDate"] = db.Tables.Item(i + 1, "dbo").CreateDate; //获取表的主键 dr["PrimaryKey"] = db.Tables.Item(i + 1, "dbo").PrimaryKey; dt.Rows.Add(dr); } } //绑定数据 this.dataGridView1.DataSource = dt; } } }
private string GetTablesScript(string dtName) { try { SQLDMO.SQLServer oserver = new SQLDMO.SQLServer(); string connStr = KingTop.Common.SQLHelper.ConnectionStringLocalTransaction; string[] arrConn = connStr.Split(';'); string server = string.Empty; string database = string.Empty; string login = string.Empty; string password = string.Empty; for (int i = 0; i < arrConn.Length; i++) { string[] itemArr = arrConn[i].Split('='); if (itemArr[0].ToLower() == "server") { server = itemArr[1]; } else if (itemArr[0].ToLower() == "database") { database = itemArr[1]; } else if (itemArr[0].ToLower() == "uid") { login = itemArr[1]; } else if (itemArr[0].ToLower() == "pwd") { password = itemArr[1]; } } oserver.Connect(server, login, password); SQLDMO._Database mydb = oserver.Databases.Item(database, "owner"); SQLDMO._Table mytable = mydb.Tables.Item(dtName, "dbo"); string tableScript = mytable.Script(SQLDMO.SQLDMO_SCRIPT_TYPE.SQLDMOScript_Default, null, null, SQLDMO.SQLDMO_SCRIPT2_TYPE.SQLDMOScript2_Default); tableScript = tableScript.Replace("[nvarchar] (0)", "[nvarchar] (max)"); tableScript = tableScript.Replace("[varchar] (-1)", "[varchar] (max)"); //去掉GO int lastPosNum = tableScript.LastIndexOf("GO"); if (lastPosNum > 0) { tableScript = tableScript.Substring(0, lastPosNum); } oserver.DisConnect(); //注释掉不需复制的字段 string[] arrFields = noCopyFields.Split(','); for (int i = 0; i < arrFields.Length; i++) { if (!string.IsNullOrEmpty(arrFields[i]) && tableScript.ToLower().IndexOf("[" + arrFields[i].ToLower() + "]") != -1) { tableScript = Regex.Replace(tableScript, "\\[" + arrFields[i] + "\\]", "--[" + arrFields[i] + "]", RegexOptions.IgnoreCase); } } return(tableScript.Replace("'", "''")); } catch { Response.Write("<div align=center style='padding:20px'>复制失败,原因是sqldmo.dll未注册,注册方法如下:<br><br> 打开开始,在运行中输入 regsvr32 \"C:\\Program Files\\Microsoft SQL Server\\80\\Tools\\Binn\\sqldmo.dll\" 注册sqldmo.dll。<br><br>在注册前请确认sqldmo.dll是否存在,不存在请从网上下载sqldmo.dll到相应目录,再进行注册"); Response.Write("<br><br><a href=# onclick='history.back();'>[返回]</a></div>"); Response.End(); return(""); } }
/// <summary> /// 连接数据库 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Connecting_Click(object sender, EventArgs e) { if (ConnOption.SelectedIndex == 0) { try { sr.Connect(this.DbSource.Text.ToString(), this.UserName.Text, this.Password.Text); } catch (Exception ex) { //MessageBox.Show(ex.Message.ToString()); //return; } for (int i = 0; i < sr.Databases.Count; i++) { if (sr.Databases.Item(i + 1, "dbo").Name == this.DbName.Text.ToString()) { SQLDMO._Database db = sr.Databases.Item(i + 1, "dbo"); this.DbTables.Items.Clear(); for (int j = 0; j < db.Tables.Count; j++) { this.DbTables.Items.Add(db.Tables.Item(j + 1, "dbo").Name); } CurrDb = db; break; } } MessageBox.Show("连接成功!"); this.Width = 612; //this.StartPosition = FormStartPosition.CenterParent; panel1.Visible = true; //this.Location.X -= this.Width / 2; //this.Location.Offset(-168, 0); this.SetDesktopLocation((Screen.GetWorkingArea(this).Width - Width) / 2, (Screen.GetWorkingArea(this).Height - Height) / 2); //this.UpdateBounds(); DbTables.SelectedIndex = 0; } else if (ConnOption.SelectedIndex == 1) { SqlConnection conn = new SqlConnection(ConnString); try { conn.Open(); if (conn.State == ConnectionState.Open) { MessageBox.Show("连接成功!"); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } //MessageBox.Show("数据库文件连接"); } }