public static string ABC(int uid)
          { 
            StringBuilder sb = new StringBuilder();
            sb.Append("[");
            string sql = "select * from table WHERE UserID=@uid ORDER BY GEName,GoodsNum DESC;";
            SqlParameter parm = new SqlParameter("@uid", SqlDbType.Int);
            parm.Value = uid;
            SqlDataReader rd = DB.SqlHelper.ExecuteReader(sql, parm);
            if (rd.Read())
            {
                while (rd.Read())
                {
                    //sb.AppendFormat("{'title':'{0},'", rd["GCName"]);
                    //sb.AppendFormat("'name':'{0},'", rd["GEName"]);//.ToString()
                    //sb.AppendFormat("'num':'{0}',", rd["GoodsNum"]);
                    //sb.AppendFormat("'level':'{0}'}", rd["GoodsLevel"]);                    
                    //sb.Append(",");
                    object[] oMsg = { rd["GCName"], rd["GEName"], rd["GoodsNum"], rd["GoodsLevel"] };
                    sb.AppendFormat("{'title':'{0}','name':'{1}','num':'{2}','level':'{3}'},", oMsg);//执行的时候这句报错???
                }
                sb = sb.Remove(sb.Length - 1, 1);
            }
            else
            {
                sb.Append("]");
            }
            rd.Close();
            return sb.ToString();
         }请问sb.AppendFormat("{'title':'{0}','name':'{1}','num':'{2}','level':'{3}'},", oMsg);这句哪里格式不正确

解决方案 »

  1.   

    rd["GCName"], rd["GEName"], rd["GoodsNum"], rd["GoodsLevel"] }; 
    应该要检查前面数组里面参数的值,
      

  2.   


    sb.AppendFormat("{'title':{0},'name':{1},'num':{2},'level':{3}},", oMsg);
      

  3.   

    sb.AppendFormat("{'title':'{0}','name':'{1}','num':'{2}','level':'{3}'},", oMsg)
    如果打算用数组的方式来传参的话应该如下
    sb.AppendFormat("{'title':'{0}','name':'{1}','num':'{2}','level':'{3}'},", oMsg[0],oMsg[1],oMsg[2],oMsg[3])
      

  4.   

    错就错在花括弧上:
    sb.AppendFormat("{{'title':'{0}','name':'{1}','num':'{2}','level':'{3}'}},", oMsg);
      

  5.   


        public class VedioGrap
        {
            private static int hHwnd;
            //private const int port = 2000;        private struct videohdr_tag
            {
                //private byte[] lpData;
                //private int dwBufferLength;
                //private int dwBytesUsed;
                //private int dwTimeCaptured;
                //private int dwUser;
                //private int dwFlags;
                //private int[] dwReserved;
            }        private delegate bool CallBack (int hwnd, int lParam);        ///   <summary>   
            ///   必需的设计器变量。   
            ///   </summary>           
            [DllImport ("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern int capCreateCaptureWindowA ([MarshalAs (UnmanagedType.VBByRefStr)]   ref   string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);        [DllImport ("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern bool capGetDriverDescriptionA (short wDriver, [MarshalAs (UnmanagedType.VBByRefStr)]   ref   string lpszName, int cbName, [MarshalAs (UnmanagedType.VBByRefStr)]   ref   string lpszVer, int cbVer);        [DllImport ("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern bool DestroyWindow (int hndw);        [DllImport ("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern int SendMessage (int hwnd, int wMsg, int wParam, [MarshalAs (UnmanagedType.AsAny)]   object lParam);        [DllImport ("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern int SetWindowPos (int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);        [DllImport ("vfw32.dll")]
            private static extern string capVideoStreamCallback (int hwnd, videohdr_tag videohdr_tag);        [DllImport ("vicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern bool capSetCallbackOnFrame (int hwnd, string s);                /// <summary>
            /// 开始载入视频
            /// </summary>            
            public bool OpenCapture (Panel pnlVideo)
            {
                bool videostart = false;
                int intWidth = pnlVideo.Width;
                int intHeight = pnlVideo.Height;
                int intDevice = 0;
                string refDevice = intDevice.ToString ();            //创建视频窗口并得到句柄            
                hHwnd = VedioGrap.capCreateCaptureWindowA (ref refDevice, 1342177280, 0, 0, 640, 480, pnlVideo.Handle.ToInt32 (), 0);            if (SendMessage (hHwnd, 0x40a, intDevice, 0) > 0)
                {
                    SendMessage (hHwnd, 0x435, -1, 0);
                    SendMessage (hHwnd, 0x434, 0x01, 0);
                    SendMessage (hHwnd, 0x432, -1, 0);
                    SetWindowPos (hHwnd, 1, 0, 0, intWidth, intHeight, 6);                videostart = true;
                }
                else
                {                
                    VedioGrap.DestroyWindow (hHwnd);                videostart = false;
                    MessageBox.Show ("加载视频失败,请检查是否有安装设备!", "拍照");
                }            return videostart;
            }        /// <summary>
            /// 停止视频
            /// </summary>
            public void StopVideo ()
            {
                //停止视频注销视频句柄
                SendMessage (hHwnd, 0x40b, 0, 0);
                DestroyWindow (hHwnd);
            }        /// <summary>
            /// 截图
            /// </summary>
            /// <returns></returns>
            public Image GrapPhoto ()
            {
                Image photo = null;            SendMessage (hHwnd, 0x41e, 0, 0);            IDataObject obj1 = Clipboard.GetDataObject ();            if (obj1.GetDataPresent (typeof (Bitmap)))
                {
                    photo = (Image)obj1.GetData (typeof (Bitmap));
                    //截完图不能关闭视频,否则无法继续截图
                    //StopVideo();
                }            return photo;
            }
            /// <summary>
            /// 保存图片到指定目录
            /// </summary>
            private void SavePhotos ()
            {
                #region
                //try
                //{
                //    frmVistInfo.SendMessage (this.hHwnd, 0x41e, 0, 0);            //    IDataObject obj1 = Clipboard.GetDataObject ();            //    if (obj1.GetDataPresent (typeof (Bitmap)))
                //    {
                //        //Image image1 = (Image)obj1.GetData(typeof(Bitmap));            //        SaveFileDialog SaveFileDialog1 = new SaveFileDialog ();
                //        SaveFileDialog1.FileName = DateTime.Now.ToString ("yyyyMMddhhmmss");
                //        SaveFileDialog1.Filter = "Image Files(*.JPG;*.GIF)|*.JPG;*.GIF|All files (*.*)|*.*";            //        if (SaveFileDialog1.ShowDialog () == DialogResult.OK)
                //        {
                //            //image1.Save(SaveFileDialog1.FileName, ImageFormat.Bmp);
                //            pbVistorImg.Image.Save (SaveFileDialog1.FileName, ImageFormat.Bmp);
                //        }
                //    }
                //}
                //catch
                //{ }
                #endregion
            }    }
      

  6.   


        public class VedioGrap
        {
            private static int hHwnd;
            //private const int port = 2000;        private struct videohdr_tag
            {
                //private byte[] lpData;
                //private int dwBufferLength;
                //private int dwBytesUsed;
                //private int dwTimeCaptured;
                //private int dwUser;
                //private int dwFlags;
                //private int[] dwReserved;
            }        private delegate bool CallBack (int hwnd, int lParam);        ///   <summary>   
            ///   必需的设计器变量。   
            ///   </summary>           
            [DllImport ("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern int capCreateCaptureWindowA ([MarshalAs (UnmanagedType.VBByRefStr)]   ref   string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);        [DllImport ("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern bool capGetDriverDescriptionA (short wDriver, [MarshalAs (UnmanagedType.VBByRefStr)]   ref   string lpszName, int cbName, [MarshalAs (UnmanagedType.VBByRefStr)]   ref   string lpszVer, int cbVer);        [DllImport ("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern bool DestroyWindow (int hndw);        [DllImport ("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern int SendMessage (int hwnd, int wMsg, int wParam, [MarshalAs (UnmanagedType.AsAny)]   object lParam);        [DllImport ("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern int SetWindowPos (int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);        [DllImport ("vfw32.dll")]
            private static extern string capVideoStreamCallback (int hwnd, videohdr_tag videohdr_tag);        [DllImport ("vicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
            private static extern bool capSetCallbackOnFrame (int hwnd, string s);                /// <summary>
            /// 开始载入视频
            /// </summary>            
            public bool OpenCapture (Panel pnlVideo)
            {
                bool videostart = false;
                int intWidth = pnlVideo.Width;
                int intHeight = pnlVideo.Height;
                int intDevice = 0;
                string refDevice = intDevice.ToString ();            //创建视频窗口并得到句柄            
                hHwnd = VedioGrap.capCreateCaptureWindowA (ref refDevice, 1342177280, 0, 0, 640, 480, pnlVideo.Handle.ToInt32 (), 0);            if (SendMessage (hHwnd, 0x40a, intDevice, 0) > 0)
                {
                    SendMessage (hHwnd, 0x435, -1, 0);
                    SendMessage (hHwnd, 0x434, 0x01, 0);
                    SendMessage (hHwnd, 0x432, -1, 0);
                    SetWindowPos (hHwnd, 1, 0, 0, intWidth, intHeight, 6);                videostart = true;
                }
                else
                {                
                    VedioGrap.DestroyWindow (hHwnd);                videostart = false;
                    MessageBox.Show ("加载视频失败,请检查是否有安装设备!", "拍照");
                }            return videostart;
            }        /// <summary>
            /// 停止视频
            /// </summary>
            public void StopVideo ()
            {
                //停止视频注销视频句柄
                SendMessage (hHwnd, 0x40b, 0, 0);
                DestroyWindow (hHwnd);
            }        /// <summary>
            /// 截图
            /// </summary>
            /// <returns></returns>
            public Image GrapPhoto ()
            {
                Image photo = null;            SendMessage (hHwnd, 0x41e, 0, 0);            IDataObject obj1 = Clipboard.GetDataObject ();            if (obj1.GetDataPresent (typeof (Bitmap)))
                {
                    photo = (Image)obj1.GetData (typeof (Bitmap));
                    //截完图不能关闭视频,否则无法继续截图
                    //StopVideo();
                }            return photo;
            }
            /// <summary>
            /// 保存图片到指定目录
            /// </summary>
            private void SavePhotos ()
            {
                #region
                //try
                //{
                //    frmVistInfo.SendMessage (this.hHwnd, 0x41e, 0, 0);            //    IDataObject obj1 = Clipboard.GetDataObject ();            //    if (obj1.GetDataPresent (typeof (Bitmap)))
                //    {
                //        //Image image1 = (Image)obj1.GetData(typeof(Bitmap));            //        SaveFileDialog SaveFileDialog1 = new SaveFileDialog ();
                //        SaveFileDialog1.FileName = DateTime.Now.ToString ("yyyyMMddhhmmss");
                //        SaveFileDialog1.Filter = "Image Files(*.JPG;*.GIF)|*.JPG;*.GIF|All files (*.*)|*.*";            //        if (SaveFileDialog1.ShowDialog () == DialogResult.OK)
                //        {
                //            //image1.Save(SaveFileDialog1.FileName, ImageFormat.Bmp);
                //            pbVistorImg.Image.Save (SaveFileDialog1.FileName, ImageFormat.Bmp);
                //        }
                //    }
                //}
                //catch
                //{ }
                #endregion
            }    }