C#SqlCeException - 缺少参数

tar*_*058 0 c# sqlexception sql-server-ce

我正在开发一个Windows Mobile 6应用程序.它正在访问SQL Server CE数据库,我收到以下错误:

缺少参数.[参数序数= 1]

我没有太多使用SQL Server CE,但使用SQL Server 2008的几乎相同的应用程序执行此代码没有任何问题.我无法弄清楚为什么它告诉我参数丢失了!

这是我的代码:

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;


namespace ElectricBarcodeApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void buttonStart_Click(object sender, EventArgs e)
        {
            System.Data.SqlServerCe.SqlCeConnection conn = new System.Data.SqlServerCe.SqlCeConnection(
            ("Data Source=" + (System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "ElectricReading.sdf") + ";Max Database Size=2047")));
            try
            {
                // Connect to the local database
                conn.Open();
                System.Data.SqlServerCe.SqlCeCommand cmd = conn.CreateCommand();

                SqlCeParameter param = new SqlCeParameter();
                param.ParameterName = "@Barcode";
                param.Value = textBarcode.Text.Trim();

                // Insert a row
                cmd.CommandText = "SELECT Location, Reading FROM Main2 WHERE Barcode LIKE @Barcode";
                cmd.ExecuteNonQuery();

                DataTable data = new DataTable();

                using (SqlCeDataReader reader = cmd.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        data.Load(reader);
                    }
                }

                if (data != null)
                {
                    this.dataGrid1.DataSource = data;
                }
            }
            finally
            {
                conn.Close();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (ElectricReadingDataSetUtil.DesignerUtil.IsRunTime())
            {
                // TODO: Delete this line of code to remove the default AutoFill for 'electricReadingDataSet.Main2'.
                this.main2TableAdapter.Fill(this.electricReadingDataSet.Main2);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我读了一些文章说,由于一些msft错误,但是我没有使用任何包含小数的数据,当传递小数时可能会发生此错误.任何帮助是极大的赞赏!

Ayk*_*vik 7

您应该将参数添加到命令中,应该是这样的

cmd.Parameters.Add(param);
Run Code Online (Sandbox Code Playgroud)