////程序段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);
}
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);
}
dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss")
改成
string dbName="d:\\aaa.mdb";
或
string dbName=@"d:\aaa.mdb";
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?
多谢各位,我再试试