如何为MMSQL服务器创建SQL表浏览器

数据库管理中,经常需要浏览和操作SQL Server中的表。通常,这需要运行SQL Server Management Studio,它需要大量的RAM和时间来在不同的表之间切换,这就是为什么很多人更喜欢使用其他方式来更快速、更轻松地查看表。

因此,创建了这个示例项目。

如何使用

这个项目包含许多不同的功能,因为它基于执行命令并将结果从SQL Server Management Studio导入到datagridview控制器中。

基本工作原理

非常简单,只需三个步骤即可完成:

  • 连接到SQL服务器。
  • 执行命令。
  • 导入执行命令的结果。

详细步骤说明

如所见,被红色包围的组框是放置连接设置的地方:

  • 服务器名称
  • 用户名
  • 密码

设置必须与SQL Server连接设置相同。

在正确添加设置后,需要使用“连接”按钮进行连接,结果就会显示出来。

已连接。

日志已更新。

包含网格和浏览控制器的组框已启用。

数据库名称已导入。

令人惊叹,对吧?让解释一下它的工作原理。

public string server { get; set; } public string user { get; set; } public string pass { get; set; }

别忘了导入连接所需的命名空间,使用以下代码:

using System.Data.Sql; server = s.Text; user = us.Text; pass = p.Text; Properties.Settings.Default.Save(); str = @" Data Source=" + server + " ;uid=" + user + " ;pwd=" + pass; string selectCommandText = " select name from sys.databases order by name" ; SqlConnection selectConnection = new SqlConnection(str); DataTable dataTable = new DataTable();

现在设置已保存,只需要添加一个try...catch表达式来连接,但首先让解释一下那个叫做selectCommandText的字符串是什么意思:

SQL select name from sys.databases order by name

这是一个查询,用于获取SQL Server中所有数据库的名称,并将它们添加到ComboBox中,例如:

try { selectConnection.Open(); new SqlDataAdapter(selectCommandText, selectConnection).Fill(dataTable); selectConnection.Close(); if (dataTable.Rows.Count > 0) { databases.DataSource = (object)dataTable; databases.DisplayMember = "name"; databases.ValueMember = "name"; } } catch(Exception ex) { }

这段代码将:

  • 连接到服务器。
  • 执行命令。
  • 导入列名为"name"的行值,并将结果添加到ComboBox中。

在连接和导入数据库名称后如何导入表

很简单,感谢导入的名称列表,可以导入它们每个包含的表,只需选择其中一个数据库,例如:

string str = @" Data Source=" + server + " ;uid=" + user + " ;pwd=" + pass; string selectCommandText = " USE " +databases.Text+ " SELECT * FROM sys.Tables " ; SqlConnection selectConnection = new SqlConnection(str); DataTable dataTable = new DataTable(); try { new SqlDataAdapter(selectCommandText, selectConnection).Fill(dataTable); if (dataTable.Rows.Count > 0) { tables.DataSource = (object)dataTable; tables.DisplayMember = "name"; tables.ValueMember = "name"; } } catch(Exception ex) { }

这段代码非常简单,它将再次连接(只是为了避免失去连接的风险)并再次执行命令,但这次的SQL命令有所不同:

SQL USE DATABASE_NAME SELECT * FROM sys.Tables

此命令将获取特定数据库中的所有表名称,代码将简单地将名称添加到拥有的第二个ComboBox中(称为tables)。

现在,在最终连接并获取想要显示的表的坐标后,需要添加这个字符串变量来包含导入命令:

public string Gcommand { get; set; } Gcommand = " USE " + databases.Text + " SELECT * FROM " + tables.Text; try { string str = @" Data Source=" + server + " ;uid=" + user + " ;pwd=" + pass; string selectCommandText = Gcommand; SqlConnection selectConnection = new SqlConnection(str); DataSet dataSet = new DataSet(); selectConnection.Open(); new SqlDataAdapter(selectCommandText, selectConnection).Fill(dataSet); selectConnection.Close(); this.Table.DataSource = (object)dataSet.Tables[0]; MessageBox.Show( " Table '" + tables.Text + " ' Imported successfully .", " Result", MessageBoxButtons.OK, MessageBoxIcon.Information); Logs.AppendText(Environment.NewLine+ @" [*] Table imported using this following command : """ +Gcommand+ @" " " " ); } catch(Exception) { }

使用这个按钮,将根据选择的数据库和表的坐标生成一个命令,例如:

SQL USE Students SELECT * FROM Students

/* 选定的数据库:Students 选定的表:Students */

SQL Management Studio的结果:

示例结果:

通常这就足够了,但添加了另一个选项,允许手动执行复杂命令,如何做到呢?

例如,只想在表中显示一列,需要自己编写执行此操作的命令,例如:

SQL USE Students SELECT Name FROM Students

/* 选定的数据库:Students 选定的表:Students 选定的列:Name */

在这种情况下,所要做的就是像下面的例子一样手动编写命令:

注意事项

这个项目只是一个示例,可以基于它构建一个复杂的项目。

  • 这个项目将节省RAM。
  • 这个项目将节省时间。
  • 这个项目将使浏览表格变得更容易。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485