public int AddDirectory(string sName,int nParentID)
{
//创建链接
OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["zjjzxConn"].ConnectionString);
///定义SQL语句
System.DateTime datetime = Convert.ToDateTime(System.DateTime.Now.ToString());
string cmdText = "INSERT INTO Directory(Name,ParentID,Contain,DirCount,FileCount,Flag,CreateDate)VALUES("
+ "'" + sName + "',"
+ "'" + nParentID + "',"
+ "'0'" + ","
+ "'0'" + ","
+ "'0'" + ","
+ "'1'" + ","
+"'"+datetime+"'"
+ ")";
///创建Command
OleDbCommand myCommand = new OleDbCommand(cmdText,conn);
///定义返回值
int nResult = -1;
try
{
///打开链接
conn.Open();
///执行SQL语句
nResult = myCommand.ExecuteNonQuery();
///修改目录的数量
cmdText = "UPDATE Directory SET DirCount = DirCount + 1 WHERE DirID='" + nParentID.ToString() + "'";
myCommand.CommandText = cmdText;
nResult = myCommand.ExecuteNonQuery();
}
catch(OleDbException ex)
{
///抛出异常
throw new Exception(ex.Message,ex);
}
finally
{ ///关闭链接
conn.Close();
}
///返回nResult
return nResult;
}
我想,以后还是用sql server2000,因为access经常会出现一些摸名的错误!!
我的笨办法,另外建立一个表,表中的字段一个一个添加,sql中参数一个一个的测试,最后找到两个问题
1、数据库中的flag字段有问题,应该把是/否中style yes/no 改成
true/false
2、下面的nParentID参数出错
cmdText = "UPDATE Directory SET DirCount = DirCount + 1 WHERE DirID='" + nParentID.ToString() + "'";
应改成
cmdText = "UPDATE Directory SET DirCount = DirCount + 1 WHERE DirID=" + nParentID.ToString() ;
3、说明:字段类型Name 文本,ParentID 数字, Flag是/否(true/false),CreateDate 日期
小结,通过这次练习,终于完成了access中使用带参数的sql用 法,希望给
和我一样的朋友带去快乐编程!!!
浙公网安备 33010602011771号