峰峦@叠嶂 2023-03-13 18:49 采纳率: 99.5%
浏览 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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀