首页 新闻 赞助 找找看

下面一条SQL语句哪错了?求解,求高手,我菜鸟

0
悬赏园豆:30 [已解决问题] 解决于 2013-01-04 10:02

OleDbParameter[] parameters = new OleDbParameter[]
{
new OleDbParameter("@Cname", DbType.String)
};
parameters[0].Value = model.Name;
StringBuilder sql = new StringBuilder();
string sqls = "update ArticleCategories set Cname='1234' where Cid=@Cid";//这行执行起来没问题
string sqls = "update ArticleCategories set Cname=@Cname where Cid=@Cid";//这行就不行,晕了。啥原因啊?
return OleDbDBHelper.ExecuteNonQuery(sqls.ToString(), parameters) > 0; 

//这是C#在操作Access数据库时出现的, Cid=@Cid就没事,set Cname=@Cname 就不行,请问是啥原因啊?

安美奇的主页 安美奇 | 初学一级 | 园豆:3
提问于:2013-01-01 14:47
< >
分享
最佳答案
0

parameter类型你设置下input(输入参数类型)试试看。

收获园豆:16
伏草惟存 | 小虾三级 |园豆:1420 | 2013-01-01 16:12

文本格式,DbType.String有错吗?

安美奇 | 园豆:3 (初学一级) | 2013-01-01 16:27

@安美奇: (parameterName, parameterValue, dbType, parameterSize, ParameterDirection.Input);  

伏草惟存 | 园豆:1420 (小虾三级) | 2013-01-01 16:47

@卿君: 汗。。。。。。不懂。。。

安美奇 | 园豆:3 (初学一级) | 2013-01-01 16:55

@安美奇: {
new OleDbParameter("@Cname", DbType.Nvarchar,50,ParameterDirection.Input)
};

注:ParameterDirection参数类型,input表示需要输入型参数,output输出型参数。Cname作为参数传入故input类型参数。明白了?最好你再去园子搜索几篇文章再理解消化一下

伏草惟存 | 园豆:1420 (小虾三级) | 2013-01-01 17:01

@卿君:  OleDbParameter[] parameters = new OleDbParameter[]
                {
                new OleDbParameter("@Cname", OleDbType.VarWChar),
               new OleDbParameter("@Pid", OleDbType.BigInt),
               new OleDbParameter("@IndexTitle",OleDbType.VarWChar),
               new OleDbParameter("@isLeaf", OleDbType.Boolean), 
                new OleDbParameter("@Cid", OleDbType.BigInt)
                };
            parameters[0].Value = model.Name;
            parameters[1].Value = model.ParentId;
            parameters[2].Value = model.IndexName;
            parameters[3].Value = model.IsLeaf;
            parameters[4].Value = model.Id;
           
            StringBuilder sql = new StringBuilder();
            //string sqls = "update ArticleCategories set Cname='1234567890' where Cid=@Cid";
            string sqls = "update ArticleCategories set Cname=@Cname,Pid=@Pid,IndexTitle=@IndexTitle,isLeaf=@isLeaf  where Cid=@Cid";
            return OleDbDBHelper.ExecuteNonQuery(sqlqs.ToString(), parameters) > 0;

安美奇 | 园豆:3 (初学一级) | 2013-01-01 17:51
其他回答(4)
0

参数化的问题咯

收获园豆:5
EchoSong | 园豆:207 (菜鸟二级) | 2013-01-01 15:10

什么意思啊?

支持(0) 反对(0) 安美奇 | 园豆:3 (初学一级) | 2013-01-01 15:44
0
收获园豆:3
chenping2008 | 园豆:9836 (大侠五级) | 2013-01-01 19:09
0

string sqls = "update ArticleCategories set Cname=@Cname where Cid=@Cid";

这个sql语句中你有两个参数Cname和Cid,但是OleDbParameter数组中却只有一个参数Cname

收获园豆:3
psforever | 园豆:461 (菜鸟二级) | 2013-01-03 15:00
0

ACCESS中参数冒似顺序错了就会出错.

收获园豆:3
56180825 | 园豆:1756 (小虾三级) | 2013-01-03 20:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册