【问题标题】:Should SQLite typeof() work with SQL as well?SQLite typeof() 也应该与 SQL 一起使用吗?
【发布时间】:2014-01-09 16:48:37
【问题描述】:

要获取列的数据类型,我在 C# 中使用以下代码

System.Data.SQLite.SQLiteConnection con = new System.Data.SQLite.SQLiteConnection("Data Source=C:\\Users\\SaMax\\Documents\\CustomersDB.s3db; Version=3; FailIfMissing=True;");
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand("select typeof(Column_Name) from Table_Name;");
cmd.Connection = con;

try
{
    con.Open();
    string str = cmd.ExecuteScalar().ToString();
    con.Close();
    MessageBox.Show(str);
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

它有效。但是我想知道它是否可以,SQL,MySql 也可以。

【问题讨论】:

    标签: c# mysql sql .net sqlite


    【解决方案1】:

    我想知道它是否可以

    如果不知道您的意图就很难说,但除非您正在编写高度动态的代码,否则您很可能事先已经知道列的类型是什么。为什么要运行此查询?

    对于 SQL 来说还可以

    它不是标准 SQL,它是 SQLite 特有的函数。其他 SQL 风格可能有类似的东西来获取列的类型,但您不能使用相同的 SQL 字符串并期望它适用于任何数据库。

    【讨论】:

    • 我运行这个查询只是为了获取字符串中返回的指定列的数据类型。
    • 好的。然后,您必须为您查询的每种类型的数据库更改 SQL。
    • 感谢您的回答。最后一个问题是:sql 中存在 SQLite typeof() 的任何替代函数,所以我可以对大多数数据库使用相同的查询?
    • @samaxI92 您不能在纯 SQL 中执行此操作,因为检查列的类型不是 SQL 标准的一部分,并且每个 SQL 实现都以不同的方式执行此功能(如果有的话)。如果您使用 ORM 而不是硬编码 SQL 查询,您可能会有机会。
    【解决方案2】:

    SQL-Server

    试试这个:

    SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS where   
      TABLE_NAME='Product' and COLUMN_NAME='Id'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      相关资源
      最近更新 更多