国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.net用OLEDB方式操作SqlServer和Sybase

2019-11-17 03:47:56
字體:
來源:轉載
供稿:網友

【錯誤一】 SqlServer提示錯誤:OleDbException 必須聲明標量變量

 

今天用.net使用Oledb的方式操作SqlServer,卻總是莫名其妙的報“必須聲明標量變量…”,在代碼里面分別采用了下面的兩種方式,都無濟于事:

方法一:OleDbParameter[] p = new OleDbParameter[] {
    new OleDbParameter("@aa",1),
    new OleDbParameter("@bb","shelley"),
    new OleDbParameter("@cc",DateTime.Now)
};
Objcmd.Parameters.AddRange(p);

方法二:OleDbParameter pp;
pp = new OleDbParameter("@aa",OleDbType.Integer);
pp.Value = 1;
Objcmd.Parameters.Add(pp);
pp = new OleDbParameter("@bb", OleDbType.LongVarChar);
pp.Value = "shelley";
Objcmd.Parameters.Add(pp);
pp = new OleDbParameter("@cc", OleDbType.Date);
pp.Value = DateTime.Now;
Objcmd.Parameters.Add(pp);無論怎么樣寫,都會提示“必須聲明標量變量@aa”,最終的原因是下面這句:OleDbCommand Objcmd = new OleDbCommand("insert into test (a,b,c)values(@aa,@bb,@cc)", Objconn);正確寫法:OleDbCommand Objcmd = new OleDbCommand("insert into test (a,b,c)values(?,?,?)", Objconn);這樣就正常通過了。 【錯誤二】Sybase提示錯誤:不支持此接口 (異常來自 HRESULT:0x80004002 (E_NOINTERFACE)).net用Oledb操作Sybase,因為在一個sql語句中可能會多次用到同一個參數,代碼如下:

OleDbCommand Objcmd = new OleDbCommand("update test set a=@aa where a=@aa", Objconn);
OleDbParameter[] p = new OleDbParameter[] {
    new OleDbParameter("aa",1),
    new OleDbParameter("aa",1)
};
Objcmd.Parameters.AddRange(p);
Objconn.Open();
Objcmd.ExecuteNonQuery();
Objconn.Close();上面的代碼就會提示“不支持此接口 (異常來自 HRESULT:0x80004002 (E_NOINTERFACE))”錯誤。問題原因在于參數中存在兩個相同名字,對于這種情況只需要寫一個參數就可以了,改動如下:

OleDbCommand Objcmd = new OleDbCommand("update test set a=@aa where a=@aa", Objconn);
OleDbParameter[] p = new OleDbParameter[] {
    new OleDbParameter("aa",1)
};或

OleDbCommand Objcmd = new OleDbCommand("update test set a=@aa where a=@aa2", Objconn);
OleDbParameter[] p = new OleDbParameter[] {
    new OleDbParameter("aa",1),
    new OleDbParameter("aa2",1)
};【總結】

如果寫一個程序,需要支持SqlServer和Sybase的時候這個地方需要特別注意:

1.SqlServer需要用“?”作為參數占位符,這樣要求即使用到了同一個參數,也必須多次添加Parameter;

2.Sybase如果多次使用同一個參數,不能多次添加Parameter,否則會報錯;

http://m.survivalescaperooms.com/shelley/archive/2010/05/25/1743438.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家界市| 年辖:市辖区| 丹东市| 株洲市| 舞阳县| 宁乡县| 依兰县| 汤阴县| 伊吾县| 胶南市| 长沙市| 长沙县| 乌拉特中旗| 清水河县| 金秀| 平凉市| 乌鲁木齐县| 龙游县| 林甸县| 察哈| 临武县| 桦南县| 苍溪县| 衡阳市| 太康县| 墨竹工卡县| 安顺市| 扎赉特旗| 合山市| 江北区| 宝清县| 木里| 绥宁县| 凤阳县| 搜索| 景德镇市| 东丰县| 平潭县| 高陵县| 电白县| 南昌市|