SQL数据库读取数据库名、表名和字段名系列操作

时间:2020-12-20 19:08:05

这两天研究单位OA平台人员数据导出,顺便研究了下读取数据库名、表名和字段名的方法,分享一下。

一、获取本机IP,用于获取数据库服务器的IP地址,当然,用127.0.0.1也可以,但有时会连不上。需要using System.Net;和using System.Net.Sockets;

public static string GetLocalIP()//获取本机IPv4地址
{
string HostName = Dns.GetHostName(); //得到主机名
IPHostEntry IpEntry = Dns.GetHostEntry(HostName);
for (int i = 0; i < IpEntry.AddressList.Length; i++)
{
if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
{
return IpEntry.AddressList[i].ToString();
}
}
return "127.0.0.1";
}
二、检测数据库是否能连接上
        public static bool TryConnet(string sServer, string sUid, string sPwd)//根据服务器IP地址、用户名和密码尝试连接SQL服务器,返回连接结果。        {            string sConStr = "Database=master;" + "Server=" + sServer + ";uid=" + sUid + ";pwd=" + sPwd + ";";            try            {                SqlConnection con = new SqlConnection(sConStr);                con.Open();                con.Close();                return true;            }            catch            {                return false;            }        }
三、获取SQL数据库中所有用户数据库

        public static DataTable GetDatabase()//获取服务器中所有用户数据库,并在第一行加上选择项
{
//创建SQL连接,连接master数据库,自行补充代码,假设连接为Conn
Conn.Open();
SqlCommand Cmd = Conn.CreateCommand();
Cmd.CommandText = @"select name from sys.databases where Database_id>4 order by name";
DataSet DS = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(Cmd);
adapter.Fill(DS);
DataTable DT =DS.Tables[0];
Conn.Close();
if (DT != null)
{
DataRow DR = DT.NewRow();
DR["name"] = "请选择数据库";
DT.Rows.InsertAt(DR, 0);
return DT;
}
else
return null;
}

四、获取指定数据库的所有表名

        public static DataTable GetDataTable(string DatabaseName)//获取指定数据库中所有表名称,并在第一行加上提示选择项
{
//创建SQL连接,连接为参数中的数据库,自行补充代码,假设连接为Conn
Conn.Open();
SqlCommand Cmd = Conn.CreateCommand();
Cmd.CommandText = @"select name from " + DatabaseName + "..SysOBjects where XType='U' order by name";
DataSet DS = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(Cmd);
adapter.Fill(DS);
DataTable DT = DS.Tables[0];
Conn.Close();
if (DT != null)
{
DataRow DR = DT.NewRow();
DR["name"] = "请选择数据表";
DT.Rows.InsertAt(DR, 0);
return DT;
}
else
return null;
}
五、获取指定数据库中指定表所有字段名,这个我是打算用checkedListBox列出来的,所以不再添加“请选择”选项了
        public static DataTable GetColumns(string DatabaseName, string DataTableName)//获取指定数据库中指定表的所有字段名称
{
//创建SQL连接,自行补充代码,假设连接为Conn
Conn.Open();
SqlCommand Cmd = Conn.CreateCommand();
Cmd.CommandText = @"select name from SysColumns where id=Object_id('" + DataTableName + "')";
DataSet DS = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(Cmd);
adapter.Fill(DS);
DataTable DT =DS.Tables[0];
return DT;
}