如果表和列是在sqlite中生成代码后,是否可以获取列名(Header)?
试过这个,但它失败了:
SQLiteCommand cmd = new SQLiteCommand();
string sSQL = "Select * from tblUser Where username = '" + txtUsername.Text + "'";
cmd.CommandText = sSQL;
cmd.Connection = clsCon.con;
SQLiteDataReader dr2;
dr2 = cmd.ExecuteReader();
string columnName = dr2.GetName(1);
dr2.Read();
if (dr2.HasRows)
{
MessageBox.Show("Username Already Exist!", "SQLite Test Application", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
txtUsername.Focus();
}
Run Code Online (Sandbox Code Playgroud)
mur*_*tgu 11
1)确保数据库已打开
2)确保命令与连接挂钩
3)确保您没有收到任何错误
4)循环列名称
var cmd = new SQLiteCommand("select * from t1", db);
var dr = cmd.ExecuteReader();
for (var i = 0; i < dr.FieldCount; i++)
{
Console.WriteLine(dr.GetName(i));
}
Run Code Online (Sandbox Code Playgroud)
根据muratgu提供的答案,我创建了以下方法:
/// <summary>
/// Checks if the given table contains a column with the given name.
/// </summary>
/// <param name="tableName">The table in this database to check.</param>
/// <param name="columnName">The column in the given table to look for.</param>
/// <param name="connection">The SQLiteConnection for this database.</param>
/// <returns>True if the given table contains a column with the given name.</returns>
public static bool ColumnExists(string tableName, string columnName, SQLiteConnection connection)
{
var cmd = new SQLiteCommand($"PRAGMA table_info({tableName})", connection);
var dr = cmd.ExecuteReader();
while (dr.Read())//loop through the various columns and their info
{
var value = dr.GetValue(1);//column 1 from the result contains the column names
if (columnName.Equals(value))
{
dr.Close();
return true;
}
}
dr.Close();
return false;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7425 次 |
| 最近记录: |