在使用帶參數的sql時(SQL Server 2000),出現以下問題:
兩種方法調用同一個數據庫操作函數,只是在紅色部分有區別,即傳遞參數名時是否帶"@"符號。
方法一在我本機測試無誤,而用方法二時返出現錯誤:“必須聲明變量@paraName”
而我同事機器正好和我的結果相反。
現在初步懷疑是數據庫設置問題,因為我們用的不是同一個數據庫,數據庫版本都是SQL Server 2000. 如果朋友們有知道此問題的請指教!
1 數據庫操作函數
2 /// <summary>
3 /// 向數據庫裡插長sql字段
4 /// </summary>
5 /// <param name="strSQL">SQL語句</param>
6 /// <param name="fs"></param>
7 /// <returns>影響的記錄數</returns>
8 public static int ExecuteSqlInsertLongSql(string strSQL, string textValue, string strParaName)
9 {
10 string strConn = System.Configuration.ConfigurationSettings.APPSettings["sqlserver"];
11 using (SqlConnection connection = new SqlConnection(strConn))
12 {
13 SqlCommand cmd = new SqlCommand(strSQL, connection);
14 string paraName = strParaName;
15 System.Data.SqlClIEnt.SqlParameter Sqlpara = new SqlParameter();
16 Sqlpara.ParameterName = paraName;
17 Sqlpara.SqlDbType = System.Data.SqlDbType.Text;
18 //orapara.OracleType = System.Data.OracleClIEnt.OracleType.LongVarChar;
19 Sqlpara.Size = textValue.Length + 1;//int.MaxValue;//
20 Sqlpara.Value = textValue.ToString();
21 cmd.Parameters.Add(Sqlpara);
22 try
23 {
24 connection.Open();
25 int rows = cmd.ExecuteNonQuery();
26 return rows;
27 }
28 catch (System.Data.SqlClIEnt.SqlException E)
29 {
30 strErrMsg = E.Message;
31 throw new Exception(E.Message);
32 }
33 finally
34 {
35 cmd.Dispose();
36 connection.Close();
37 }
38 }
39 }
40 使用方法一:
41 string strHtmlValue=this.HtmlEditor1.Text.Replace("'","''");
42 sql="insert into wjb(scrq,scr,wJSm,wjnr,wjlxbm,shzt,wjm) values('"+this.lb_fbrq.Text.Trim()+"','"+userID+"','"+this.txt_bt.Text.Trim()+"',@paraName,'03','2','"+str_slm+"')";
43
44
45 if(conn.ExecuteSqlInsertLongSql(sql,strHtmlValue,"@paraName")==1)
46 //.
47
48 使用方法二:
49 string strHtmlValue=this.HtmlEditor1.Text.Replace("'","''");
50
51 sql="insert into wjb(scrq,scr,wJSm,wjnr,wjlxbm,shzt,wjm) values('"+this.lb_fbrq.Text.Trim()+"','"+userID+"','"+this.txt_bt.Text.Trim()+"',@paraName,'03','2','"+str_slm+"')";
52
53
54 if(conn.ExecuteSqlInsertLongSql(sql,strHtmlValue,"paraName")==1)