gpt4 book ai didi

c# - SQLServerCE 不能在 select 语句中使用 rtrim - SQLCEException

转载 作者:行者123 更新时间:2023-11-30 21:09:59 24 4
gpt4 key购买 nike

我正在编写一个使用 SQL CE 的 Windows 移动应用程序。当我包含 WHERE Barcode = @Barcode 语句时,它不会返回任何行。

我猜这是因为 Barcode 的值后面有尾随空格。所以我想使用WHERE rtrim(Barcode) LIKE @Barcode。但它给了我一个 SqlCeException 说“函数的指定参数值无效。”

我确定我在这里遗漏了一些愚蠢的东西。非常感谢任何帮助。

这是我的代码:

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 rtrim(Barcode) LIKE @Barcode";
cmd.Parameters.Add(param);

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);
}

}
}
}

最佳答案

问题是您不能 TRIM TEXT 或 TEXT 列。这也适用于标准 SQL Server。

您必须先将其转换为 NVARCHAR:

SELECT Location, Reading FROM Main2 WHERE rtrim(CONVERT(NVARCHAR, Barcode)) LIKE @Barcode

关于c# - SQLServerCE 不能在 select 语句中使用 rtrim - SQLCEException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com