SQL Browser






3.91/5 (25投票s)
以专业的方式浏览您的 MMSQL 服务器表。
引言
这个主题的标题可能看起来有点奇怪,但没错,今天的文章是关于如何为 MMSQL 服务器数据库创建一个 SQL 表浏览器。
背景
要浏览您的表,您需要运行 SQL Server Management Studio,它需要大量的内存和时间才能在不同表之间跳转,这就是为什么很多人宁愿使用浏览器或其他工具以更好、更快、更容易的方式查看表。
所以这就是我创建这个示例的原因。
如何使用
嗯,这个项目包含许多不同的功能,因为它基于执行命令并将结果从 SQL Server Management Studio 导入到 datagridview
控件。
它基本如何工作?
非常简单,只需三个步骤,您就可以完成它
- 连接到 SQL 服务器。
- 执行命令。
- 导入已执行命令的结果。
让我们开始分部分解释它是如何工作的(包括图片)
正如您所见,被红色框起来的 groupbox 是我们将放置连接设置的地方
- 服务器名称
- 用户名
- 密码
设置必须与您的 SQL Server 连接设置相同。
正确添加您的设置后,您必须使用“连接”按钮进行连接,这里是结果。
- 您已连接。
- 日志已更新。
- 包含网格和浏览控件的
groupbox
已启用。 - 数据库名称已导入。
很棒,不是吗?那么让我们解释一下它是如何工作的。
首先,创建 3 个 string
来存储您的连接设置
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
这个 string
的含义
select name from sys.databases order by name
这是一个查询,用于获取 SQL Server 中所有数据库的名称,并将它们添加到我们的 ComboBox
中,名为 databases
,例如
现在将此代码附加到按钮的代码中
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
中。
连接并导入数据库名称后,如何导入表?
很简单,多亏了我们导入的名称列表,我们可以导入每个数据库中包含的表,只需选择一个数据库,例如
让我们将此代码添加到包含数据库的 ComboBox
的 SelectedIndexChanged
事件中
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 命令不同
USE DATABASE_NAME SELECT * FROM sys.Tables
此命令将获取特定数据库中所有表的名称,我们的代码将简单地将名称添加到我们拥有的第二个 ComboBox
中(名为 tables
)。
现在,在我们最终连接并获取要显示的表的坐标后,我们必须添加这个 string
变量来包含我们的导入命令
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)
{
}
使用此按钮,我们将根据我们选择的数据库和表的坐标生成一个命令,例如
USE Students SELECT * FROM Students
/*
selected database : Students
selected table : Students
*/
SQL Management Studio 的结果
示例的结果
就这样,通常这已经足够了,但我还添加了另一个选项,允许您手动执行复杂命令,如何?
例如,您只想显示表中的一个列,您必须自己编写执行此操作的命令,例如
USE Students SELECT Name FROM Students
/*
selected database : Students
selected table : Students
selected column : Name
*/
在这种情况下,您要做的就是手动编写您的命令,如下面的示例所示
就是这样!
注释
- 这个项目只是一个示例,您可以基于此项目构建一个复杂的项目。
- 这个项目将节省您的内存。
- 这个项目将节省您的时间。
- 这个项目将使浏览您的表更加容易。
- 演示可以自由分享(包括某些权利,如:Codeproject 的权利和我的信息)
历史
- 2015年7月7日:初始版本