2

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

        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 指定的其他数据类型链接似乎根本不起作用。

欢迎任何想法?谢谢!

4

1 回答 1

3

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

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

CREATE TABLE tblFoo (bar TEXT)

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

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

CREATE TABLE tblFoo (bar TEXT(255))
于 2013-08-15T16:34:36.300 回答