////程序段1  动态创建数据库
string dbName="d:\aaa.mdb";
ADOX.CatalogClass cat = new ADOX.CatalogClass();
                cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";");
                // MessageBox.Show("数据库:" + dbName + "已经创建成功!");
                ADOX.TableClass tbl = new ADOX.TableClass();
                tbl.ParentCatalog = cat;
                tbl.Name = "MyTable";                //增加一个自动增长的字段   
                ADOX.ColumnClass col = new ADOX.ColumnClass();
                col.ParentCatalog = cat;
                col.Type = ADOX.DataTypeEnum.adInteger;   //   必须先设置字段类型   
                col.Name = "id";
                col.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                col.Properties["AutoIncrement"].Value = true;
                tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 10);                //增加一个文本字段   
                ADOX.ColumnClass col2 = new ADOX.ColumnClass();
                col2.ParentCatalog = cat;
                col2.Name = "Description";
                col2.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25);
                
                //自己加的时间/日期字段 不知道是否正确
                ADOX.ColumnClass col3 = new ADOX.ColumnClass();
                col3.ParentCatalog = cat;
                col3.Type = ADOX.DataTypeEnum.adDate;   //   必须先设置字段类型   
                col3.Name = "Time";
                col3.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                tbl.Columns.Append(col3, ADOX.DataTypeEnum.adDate, 25);
                //设置主键   
                tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "");
                cat.Tables.Append(tbl);                // MessageBox.Show("数据库表:" + tbl.Name + "已经创建成功!");
                label4.Text = "数据库:" + dbName + "已经创建成功!";
                tbl = null;
                cat = null;//程序段2 在创建数据库表成功后,检索表内的数据,将id字段内容添加到comboBox2中for (int i = 0; i <thisDataSet.Tables["MyTable"].Rows.Count; i++)
            {
                for (int j = 0; j < thisDataSet.Tables["MyTable"].Columns.Count; j++)
                    if (thisDataSet.Tables["MyTable"].Columns[j].Caption.ToUpper() == "ID")
                    {
                        int pos = j;                        comboBox2.Items.Add(thisDataSet.Tables["MyTable"].Rows[i][pos].ToString());
                    }
            }
//以上两段都可以正常运行,但是在执行如下代码时,提示"INSERT INTO语法错误",为什么?请帮助解决!!!急
//程序段3 btn_click1 下面这段是实现插入一条记录
try
            {
                string strSql = "insert into MyTable (id,Description,Time) VALUES ('";
                strSql += comboBox2.Text + "','";
                strSql += comboBox1.Text + "','";
                strSql += dateTimePicker1.Value.ToShortDateString() + "')";
                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandText = strSql;
                cmd.Connection = thisConnection;
                cmd.ExecuteNonQuery();
                this.thisDataSet.Tables["MyTable"].Rows[this.MyBind.Count-1].BeginEdit();
                this.thisDataSet.Tables["MyTable"].Rows[this.MyBind.Count-1].EndEdit();
                this.thisDataSet.AcceptChanges();
               // this.thisAdapter.Fill(this.thisDataSet, "MyTable");
                label4.Text = "数据库操作成功!";
            }
            catch (Exception Err)
            {
                MessageBox.Show("增加数据库记录操作失败: " + Err.Message);
            }

解决方案 »

  1.   

    多数是因为时间字段的格式不对,试一试这样的写法
    dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss")
      

  2.   

    string dbName="d:\aaa.mdb";
    改成
    string dbName="d:\\aaa.mdb";

    string dbName=@"d:\aaa.mdb";
      

  3.   

    //自己加的时间/日期字段 不知道是否正确
                    ADOX.ColumnClass col3 = new ADOX.ColumnClass();
                    col3.ParentCatalog = cat;
                    col3.Type = ADOX.DataTypeEnum.adDate;   //   必须先设置字段类型   
                    col3.Name = "Time";
                    col3.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
                    tbl.Columns.Append(col3, ADOX.DataTypeEnum.adDate, 25);
    请帮助看看,这样定义字段是否有错,是否还需要设置其他什么属性,比如整形字段是的AutoIncrement?
    多谢各位,我再试试
      

  4.   

    仔细检查下你的sql语句。你的strSql 设个断点,然后吧得到的字符串放到查询分析器中看看能否运行