예제 #1
0
파일: Form1.cs 프로젝트: simedcn/dipprocess
        /// <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;
                }

            }
        }
예제 #2
0
        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("");
            }
        }
예제 #3
0
        /// <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("数据库文件连接");
            }
        }