我使用以下函数创建访问表:
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似乎根本不起作用。
欢迎任何想法?谢谢!
答案 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))