错误的数据类型OleDB创建表

时间:2013-08-15 16:04:44

标签: c# ms-access oledb

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

        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访问中打开访问表,则数据类型为Memo,而不是Text。 MS指定的其他数据类型link似乎根本不起作用。

欢迎任何想法?谢谢!

1 个答案:

答案 0 :(得分:3)

Access DDL TEXT数据类型的行为会有所不同,具体取决于执行语句的上下文。

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

CREATE TABLE tblFoo (bar TEXT)

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

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

CREATE TABLE tblFoo (bar TEXT(255))