【问题标题】:Wrong data type OleDB Create Table错误的数据类型 OleDB 创建表
【发布时间】:2013-08-15 16:04:43
【问题描述】:

我正在使用以下函数来创建访问表:

        public static void createtable(string path, string tablename, string[] columnnames)
    {
        try
        {
            string connectionstring = creadteconnectionstring(path);
            OleDbConnection myConnection = new OleDbConnection(connectionstring);
            myConnection.Open();
            OleDbCommand myCommand = new OleDbCommand();
            myCommand.Connection = myConnection;
            string columnam = "[" + columnnames[0] + "] Text";

            for (int i = 1; i < columnnames.Length; i++)
            {
                    columnam = columnam + ", [" + columnnames[i] + "] Text";
            }

            myCommand.CommandText = "CREATE TABLE [" + tablename + "](" + columnam + ")";
            myCommand.ExecuteNonQuery();
            myCommand.Connection.Close();
            Console.WriteLine("Access table " + tablename + " created.");
        }
        catch 
        {
                Console.WriteLine("Access table " + tablename + " already exists.");
                return;


        }


    }

但是,如果我在 MS 访问中打开访问表,则数据类型是备忘录,而不是文本。 MS 指定的其他数据类型link 似乎根本不起作用。

欢迎任何想法?谢谢!

【问题讨论】:

  • 我认为您使用VARCHAR(50)NVARCHAR(50) 而不是TEXT。数字就是长度。

标签: c# ms-access oledb


【解决方案1】:

Access DDL TEXT 数据类型的行为因执行语句的上下文而异。

从 Access 中的 DAO,这将创建 bar 作为文本字段。但从 Access 中的 ADO 中,bar 将是备忘录类型。

CREATE TABLE tblFoo (bar TEXT)

从 OleDb 连接执行该语句会产生与 Access 中的 ADO 相同的结果。

如果您希望 bar 成为实际的文本字段,请包含字段长度

CREATE TABLE tblFoo (bar TEXT(255))

【讨论】:

  • 感谢您的回答。双打呢?编号:双[15]
  • 在你的 DDL 中使用 DOUBLE 用于双精度类型。但我认为 Access db 引擎不接受 double 的长度参数。对于其他数据类型,请参阅allenbrowne.com/ser-49.htmlDDL(查询)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
相关资源
最近更新 更多