峰峦@叠嶂 2023-03-13 18:49 采纳率: 97%
浏览 13
已结题

想开发一个,能根据所选择的数据库名称,来统计该数据内各表的行数有多少的小窗体;

想开发一个,能根据所选择的数据库名称,来统计该数据内各表的行数有多少的小窗体,如下图那样;代码如下,之前数据库名称都是文本框,但改为下拉菜单后,就不知怎么写了,请指导一下,谢谢

img


```c#
 private void button1_Click(object sender, EventArgs e)
        {
            String connectionString = String.Format("server={0};uid={1};pwd={2};", textBoxHost.Text, textBoxUser.Text, textBoxPassword.Text);
            SqlConnection sqlconn = new SqlConnection(connectionString);

            sqlconn.Open();

            SqlString = "select name from sys.databases where name NOT IN ('master', 'tempdb', 'model', 'msdb')";

            //加载数据并显示

           //string query = "SELECT name from sys.databases where name NOT IN ('master', 'tempdb', 'model', 'msdb')";

            try
            {
                MessageBox.Show("数据库连接成功!");
                //查询条件和SqlConnection连接
                SqlCommand cmd = new SqlCommand(SqlString, sqlconn);
                //数据适配器
                SqlDataAdapter sda = new SqlDataAdapter();
                sda.SelectCommand = cmd;
                //DataTable存储数据
                DataTable dt = new DataTable();
                sda.Fill(dt);
                dataGridView1.DataSource = dt;
                              
            }
           
            catch (Exception ex)
            {
                MessageBox.Show("数据库连接失败,请填写准确连接参数");
                return;
            }

            finally
            {
                conn.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            String connectionString = String.Format("server={0};uid={1};pwd={2};", textBoxHost.Text, textBoxUser.Text, textBoxPassword.Text);
            
            SqlConnection sqlconn = new SqlConnection(connectionString);

            sqlconn.Open();

            SqlString = "SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = 'u') AND (b.indid IN (0, 1)) ORDER BY b.rows desc";

            //加载数据并显示

            try
            {
                //查询条件和SqlConnection连接
                SqlCommand cmd = new SqlCommand(SqlString, sqlconn);
                //数据适配器
                SqlDataAdapter sda = new SqlDataAdapter();
                sda.SelectCommand = cmd;
                //DataTable存储数据
                DataTable dt = new DataTable();
                sda.Fill(dt);
                dataGridView1.DataSource = dt;

            }
            catch
            { }
            finally
            {
                conn.Close();
            }
        }

```

  • 写回答

1条回答 默认 最新

  • MarkHan_ 2023-03-13 18:55
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    根据您提供的代码,可以在comboBox控件的SelectedIndexChanged事件中获取选择的数据库名称,并修改查询语句,以获取该数据库中各表的行数。代码示例如下:

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string selectedDatabase = comboBox1.SelectedItem.ToString();
        String connectionString = String.Format("server={0};uid={1};pwd={2};database={3};", textBoxHost.Text, textBoxUser.Text, textBoxPassword.Text, selectedDatabase);
    
        SqlConnection sqlconn = new SqlConnection(connectionString);
    
        sqlconn.Open();
    
        SqlString = "SELECT a.name, b.rows FROM " + selectedDatabase + ".dbo.sysobjects AS a INNER JOIN " + selectedDatabase + ".dbo.sysindexes AS b ON a.id = b.id WHERE (a.type = 'u') AND (b.indid IN (0, 1)) ORDER BY b.rows desc";
    
        //加载数据并显示
    
        try
        {
            //查询条件和SqlConnection连接
            SqlCommand cmd = new SqlCommand(SqlString, sqlconn);
            //数据适配器
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = cmd;
            //DataTable存储数据
            DataTable dt = new DataTable();
            sda.Fill(dt);
            dataGridView1.DataSource = dt;
    
        }
        catch
        { }
        finally
        {
            sqlconn.Close();
        }
    }
    
    
    

    在这个代码中,我们修改了查询语句,使用了所选择的数据库名来动态构建查询语句,获取所选数据库内各表的行数。然后,我们将查询结果显示在DataGridView控件中,与之前的查询逻辑相同。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月25日
  • 已采纳回答 3月17日
  • 创建了问题 3月13日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助