我可以在代码中创建具有唯一名称的表,但是当我想创建一个具有动态名称的表时,通过使用文本框的内容,它会在消息框中显示“CREATE TABLE语句中的语法错误”。 我的代码:
private void createTableInDatabase(string fName, string lName)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project\Learning\Visual C#\Form\Tailor Assistance\Tailor Assistance\bin\Release\Tailor Assistance.mdb";
conn.Open();
string tableName = fName + " " + lName;
OleDbCommand cmmd = new OleDbCommand("", conn);
cmmd.CommandText = "CREATE TABLE " + tableName + "( [ID] Counter Primary Key, [FirstName] Text, [LastName] Text, [Gender] Text, [Phone] Text, [CellPhone] Text, [FriendsFirstName] Text, [FriendsLastName] Text, [RegisterDate] Text, [Size] Text, [Description] Text)";
if (conn.State == ConnectionState.Open)
{
try
{
cmmd.ExecuteNonQuery();
MessageBox.Show("Add!");
conn.Close();
}
catch (OleDbException expe)
{
MessageBox.Show(expe.Message);
conn.Close();
}
}
else
{
MessageBox.Show("Error!");
}
}
有什么问题?
答案 0 :(得分:5)
您的表名包含空格。你需要用方括号封装它 请写下这个
string tableName = "[" + fName + " " + lName + "]";
但是,我强烈建议你避免这种情况 在将来,您将始终必须这样做,因为您写的每个查询 一个简单的众所周知的解决方法是使用下划线而不是空格。
然后,看着你的字段名称,我注意到一个名为SIZE的字段
这是reserved keyword for MS Access。你将在这里遇到同样的问题。
每个使用该字段的查询都需要将名称封装在方括号中,
再次,为了您未来的心理健康,请更改该名称。 : - )