这两天研究单位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)//获取指定数据库中所有表名称,并在第一行加上提示选择项五、获取指定数据库中指定表所有字段名,这个我是打算用checkedListBox列出来的,所以不再添加“请选择”选项了
{
//创建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;
}
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;
}