/// 获得目标服务器所有数据库名
/// </summary>
/// <param name="serverName"></param>
/// <param name="userName"></param>
/// <param name="password"></param>
public void getDataBaseNameList(string serverName, string userName, string password)
{
SQLDMO.Application sqlApplication = new SQLDMO.ApplicationClass()
SQLDMO.SQLServer sqlServer = new SQLDMO.SQLServerClass()
sqlServer.Connect(serverName, userName, password) // 连接服务器
foreach (SQLDMO.Database databBase in sqlServer.Databases)
{
if (databBase.Name != null)
{
this.DataBaseTreeView.Nodes.Add(databBase.Name)
getDataBaseTableList(serverName, userName, password, databBase.Name)
}
}
}
/// <summary>
/// 加载数据库中表
/// </summary>
/// <param name="serverName">服务器名</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <param name="dataBaseName">数据库名</param>
private void getDataBaseTableList(string serverName, string userName, string password, string dataBaseName)
{
SQLDMO.SQLServer Server = new SQLDMO.SQLServerClass()
//连接到服务器
Server.Connect(serverName, userName, password)
//对所有的数据库遍历,获得指定数据库
for (int i = 0i <Server.Databases.Counti++)
{
//判断当前数据库是否是指定数据库
if (Server.Databases.Item(i + 1, "dbo").Name == dataBaseName)
{
//获得指定数据库
SQLDMO._Database db = Server.Databases.Item(i + 1, "dbo")
//获得指定数据库中的所有表
for (int j = 0j <db.Tables.Countj++)
{
this.DataBaseTreeView.Nodes[i].Nodes.Add(db.Tables.Item(j + 1, "dbo").Name)
}
}
}
}
/// <summary>
/// 获得表中所有列名
/// </summary>
/// <param name="serverName">服务器名</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <param name="tableName">表名</param>
/// <param name="dataBaseName">数据库名</param>
/// <returns></returns>
public string getRowListFromTable(string serverName, string userName, string password, string tableName, string dataBaseName)
{
string result = string.Empty
string connectionString = string.Empty
connectionString += "server=" + serverName
connectionString += "Pwd=" + password
connectionString += "UID=" + userName
connectionString += "Database=" + dataBaseName
string commandString = string.Empty
commandString += "select name from syscolumns where id=object_id('"
commandString += tableName
commandString += "')"
SqlConnection sqlConnection = new SqlConnection(connectionString)
SqlCommand sqlCommand = new SqlCommand(commandString, sqlConnection)
SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, sqlConnection)
DataSet dataSet = new DataSet()
dataAdapter.Fill(dataSet)
DataTable dataTable = dataSet.Tables[0]
// DataTable dataTable = sqlConnection.GetSchema("Tables")
foreach (DataRow row in dataTable.Rows)
{
result += row[0].ToString() + "-"
}
if (result != null)
{
return result
}
else
{
return "0"
}
}
为了实现对数据库版本进行管理,SQLiteOpenHelper类提供了两个重要的方法,分别是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用于初次使用软件时生成数据库表。后者用于升级软件时更新数据库表结构。当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于 *** 作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次生成数据库时才会被调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。
onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的,假设数据库现在的版本是1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构,为了实现这一目的,可以把原来的数据库版本设置为2,并且在onUpgrade()方法里面实现表结构的更新。
当软件的版本升级次数比较多,这时在onUpgrade()方法里面可以根据原版号和目标版本号进行判断,然后作出相应的表结构及数据更新。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)