我正在使用存储过程来获取 C# 应用程序中的数据。当直接在 SQL Server 中执行时,SQL 查询返回正确的值,但是当我使用 SqlDataAdapter 填充 DataSet 时,输出值从 10#1000 更改为 101000。看起来 # 字符被删除并且值被连接。数据库表列的值如下:
CancelChargesStep1 | CancelChargesStep2 | CancelChargesStep3
------------------------------------------------------------------
10#1000 | 20#500 | 30#250
这是我的 C# 代码的简化版本:
`SqlCommand sqlComm = new SqlCommand("MyStoredProcedure", sqlConn);
sqlComm.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlComm;
DataSet ds = new DataSet();
da.Fill(ds);`
我尝试将 SQL 查询中的列转换为 VARCHAR 或 NVARCHAR,以确保这些值被视为字符串:
SELECT CAST(CancelChargesStep1 AS VARCHAR(50)) AS CancelChargesStep1 FROM MyTable;
我没有发现你的工作有任何错误。我将全面介绍 SQL Server 中从数据定义到数据检索的解决方案。最后用c#进行前端编码。
CREATE TABLE TEST1
(CancelChargesStep1 VARCHAR(50),
CancelChargesStep2 VARCHAR(50),
CancelChargesStep3 VARCHAR(50));
INSERT INTO Test1(CancelChargesStep1 , CancelChargesStep2 , CancelChargesStep3)
VALUES
('10#1000','20#500','30#250');
CREATE PROCEDURE DRL_TEST
AS
SELECT CancelChargesStep1 , CancelChargesStep2 , CancelChargesStep3 FROM TEST1
RETURN;
以上三个步骤已经在SQL Server 2014 Express中实现了
此c#代码已在VS2022上的.Net Framework 4.7中实现。
SqlConnection sqlConn = new SqlConnection(MyConnectionString);
SqlCommand sqlComm = new SqlCommand("DRL_TEST", sqlConn);
sqlComm.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlComm;
DataSet ds = new DataSet();
da.Fill(ds);
DataGrid1.DataSource= ds.Tables[0];