[英]String or binary data would be truncated. but i can't save it other way
我有這段代碼,我試圖用字符串更新consultas_marcadas
列的值,這里是執行此操作的 function (這個 function 在名為“AB”的 ZA2F2ED4F8EBC2CBB14C21A29DZ40 中)
public bool SetValorPaciente(String nome, String coluna, String valor)
{
bool flag = false;
string strCmd = "UPDATE Paciente SET @coluna = @valor WHERE nome = @nome; ";
using (SqlConnection objConn = new SqlConnection(conString))
using (SqlCommand objCmd = new SqlCommand(strCmd, objConn))
{
objCmd.Parameters.AddWithValue("@coluna", coluna);
objCmd.Parameters.AddWithValue("@valor", valor);
objCmd.Parameters.AddWithValue("@nome", nome);
objConn.Open();
objCmd.ExecuteNonQuery();
flag = true;
objConn.Close();
}
return flag;
}
這里是獲取條件值 ( nome
)、要更新的列 ( consultas_marcadas
) 和要更新的值 ( consultas
) 的地方,順便說一句,它們都是字符串。
dataclass datac = new dataclass();
bool valor = datac.SetValorPaciente(nome, "Consultas_Marcadas", consulta);
當我嘗試運行代碼時,我不斷收到此錯誤:
System.Data.dll 中發生“System.Data.SqlClient.SqlException”,但未在用戶代碼中處理。
字符串或二進制數據將被截斷。
在四處尋找答案之后似乎出現了,因為我的專欄(在這種情況下為consultas_marcadas
)只接受比我提供的更小的字符串,現在這是一個我似乎無法解決的問題:
我已將列數據類型從Varchar(Max)
更改為NVarchar(Max)
甚至更改為TEXT
,但這仍然不起作用;
我試圖更改字符串consulta
並使其只是第一個單詞,這並沒有給我任何錯誤,但它也從未更新過奇怪的表格。
因此,鑒於我要求兩件事:
是否可以停止收到此錯誤?
保存長字符串的最佳方法是什么? 也許 SQL 不是我應該尋找的東西,也許有一種方法可以將此文本保存到文件中,然后將該文件保存在某處並稍后閱讀,真正的程序員每天必須處理長字符串怎么辦?
根據您的描述,您希望在不引發異常的情況下解決錯誤。
首先,如果所有字段都是字符串類型,我們需要在數據庫中創建下表。
其次,您可以使用以下代碼來更新您的數據庫。
public bool SetValorPaciente(String nome, String coluna, String valor)
{
bool flag = false;
string strCmd = "UPDATE Paciente SET coluna = @coluna,valor=@valor WHERE nome = @nome; ";
using (SqlConnection objConn = new SqlConnection(conString))
using (SqlCommand objCmd = new SqlCommand(strCmd, objConn))
{
objCmd.Parameters.AddWithValue("@coluna", coluna);
objCmd.Parameters.AddWithValue("@valor", valor);
objCmd.Parameters.AddWithValue("@nome", nome);
objConn.Open();
objCmd.ExecuteNonQuery();
flag = true;
objConn.Close();
}
return flag;
}
注意:我修改了關於strCmd
語句的代碼。
當您找到與 nome 相同的值時,您可以更新coluna
和valor
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.