嗨,所以我有麻煩使用select語句從另一個數據庫中讀取MAS4.4是程序並在sql server上更新它。我的代碼只有一次,我嘗試更新與Convert.ToString我得到的錯誤,我不知道爲什麼。C#sql選擇並更新如果curRow
這裏是我的代碼..
這本書給我上Convert.ToString問題
private delegate void AddPrimaryIndexHandler(System.Data.DataTable webData);
private delegate System.Data.DataRow FindRowByIndexHandler(System.Data.DataTable webData, string partNumber);
private int UpdateWeb(string sConnString, string sTableName, string sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
{
int updateCount = 0;
using (OdbcConnection masConn = new OdbcConnection(masConnString))
{
masConn.Open();
string masSelect = @"SELECT CI_Item.ItemCode, CI_Item.UDF_ROHS, CI_Item.UDF_CONFLICT_MINERALS, CI_Item.UDF_REACH138, CI_Item.UDF_CUSTOMER_LEAD_TIME, IM_ItemWarehouse.QuantityOnHand, IM_ItemWarehouse.QuantityOnSalesOrder, IM_ItemWarehouse.QuantityOnBackOrder, CI_Item.Category1
FROM CI_Item, IM_ItemWarehouse
WHERE (CI_Item.ItemCode = IM_ItemWarehouse.ItemCode) AND (CI_Item.EBMEnabled = 'Y') AND (IM_ItemWarehouse.WarehouseCode = '001')";
using (OdbcCommand command = new OdbcCommand(masSelect, masConn))
using (OdbcDataReader masReader = command.ExecuteReader())
{
if (masReader.HasRows)
{
string webSelect = String.Format("SELECT {1}PartNumber, RohsCompliant, ConflictMinerals, Reach138Compliant, QtyOnHand, QtyOnSalesOrder, QtyOnBackOrder, UpdateDate, ReviewedBy, LEAD_TIME_WEEKS FROM, Book {0} WHERE WebEnabled = 'Y' AND RohsCompliant is not null and ConflictMinerals is not null and Reach138Compliant is not null", sTableName, sPrimaryColModifier);
using (SqlDataAdapter webAdapter = new SqlDataAdapter(webSelect, sConnString))
using (SqlCommandBuilder commmandBuilder = new SqlCommandBuilder(webAdapter))
{
webAdapter.UpdateBatchSize = 0;
commmandBuilder.ConflictOption = ConflictOption.OverwriteChanges;
DataTable webData = new DataTable("WebData");
webAdapter.Fill(webData);
addPrimaryIndexColumn(webData);
while (masReader.Read())
{
string partNumber = (string)masReader["ItemCode"];
string Rohs_Compliant = (string)masReader["UDF_ROHS"];
string Conflict_Minerals = (string)masReader["UDF_CONFLICT_MINERALS"];
string Reach138_Comliant = (string)masReader["UDF_REACH138"];
decimal qtyOnHand = (decimal)masReader["QuantityOnHand"];
decimal qtyOnSalesOrder = (decimal)masReader["QuantityOnSalesOrder"];
decimal qtyOnBackOrder = (decimal)masReader["QuantityOnBackOrder"];
decimal LEAD_TIME_WEEKS = (decimal)masReader["UDF_CUSTOMER_LEAD_TIME"];
string Book = (string)masReader["Category1"];
DataRow curRow = findRowByIndex(webData, partNumber);
if (curRow != null)
{
bool needsUpdate = false;
if (Rohs_Compliant == "Y")
{
if (Convert.ToBoolean(curRow["RohsCompliant"]) == false)
{
curRow["RohsCompliant"] = 1;
needsUpdate = true;
}
}
if (Rohs_Compliant == "N")
{
if (Convert.ToBoolean(curRow["RohsCompliant"]) == true)
{
curRow["RohsCompliant"] = 0;
needsUpdate = true;
}
}
if (Conflict_Minerals == "Y")
{
if (Convert.ToBoolean(curRow["ConflictMinerals"]) == false)
{
curRow["ConflictMinerals"] = 1;
needsUpdate = true;
}
}
if (Conflict_Minerals == "N")
{
if (Convert.ToBoolean(curRow["ConflictMinerals"]) == true)
{
curRow["ConflictMinerals"] = 0;
needsUpdate = true;
}
}
if (Reach138_Comliant == "Y")
{
if (Convert.ToBoolean(curRow["Reach138Compliant"]) == false)
{
curRow["Reach138Compliant"] = 1;
needsUpdate = true;
}
}
if (Reach138_Comliant == "N")
{
if (Convert.ToBoolean(curRow["Reach138Compliant"]) == true)
{
curRow["Reach138Compliant"] = 0;
needsUpdate = true;
}
}
if (curRow["QtyOnHand"] is DBNull || Convert.ToDecimal(curRow["QtyOnHand"]) != qtyOnHand)
{
curRow["QtyOnHand"] = qtyOnHand;
needsUpdate = true;
}
if (curRow["QtyOnSalesOrder"] is DBNull || Convert.ToDecimal(curRow["QtyOnSalesOrder"]) != qtyOnSalesOrder)
{
curRow["QtyOnSalesOrder"] = qtyOnSalesOrder;
needsUpdate = true;
}
//
if (curRow["QtyOnBackOrder"] is DBNull || Convert.ToDecimal(curRow["QtyOnBackOrder"]) != qtyOnBackOrder)
{
curRow["QtyOnBackOrder"] = qtyOnBackOrder;
needsUpdate = true;
}
//
if (curRow["LEAD_TIME_WEEKS"] is DBNull || Convert.ToDecimal(curRow["LEAD_TIME_WEEKS"]) != LEAD_TIME_WEEKS)
{
curRow["LEAD_TIME_WEEKS"] = LEAD_TIME_WEEKS;
needsUpdate = true;
}
//
if (curRow["Book"] is DBNull || Convert.ToString(curRow["Book"]) != Book)
{
curRow["Book"] = Book;
needsUpdate = true;
}
if (needsUpdate)
{
curRow["UpdateDate"] = DateTime.Now;
curRow["ReviewedBy"] = "Spider2.2";
}
}
}
updateCount = webAdapter.Update(webData);
}
}
}
}
return updateCount;
}
}
}
錯誤消息:
2/6/2014 3:16:29 PM
Attempt 1: Error updating new database (DNN7) - Line: 0 Incorrect syntax near '.'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Spider.Spider.UpdateWeb(String sConnString, String sTableName, String sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
at Spider.Spider.RunWebUpdate(SpiderLog log, Int32 numberOfAttempts)
-1 DNN7 Part Numbers successfully updated.
Error updating old database (DNN6) - Line: 0 Invalid column name 'WebEnabled'.
Invalid column name 'RohsCompliant'.
Invalid column name 'ConflictMinerals'.
Invalid column name 'Reach138Compliant'.
Invalid column name 'PartNumber'.
Invalid column name 'RohsCompliant'.
Invalid column name 'ConflictMinerals'.
Invalid column name 'Reach138Compliant'.
Invalid column name 'QtyOnHand'.
Invalid column name 'QtyOnSalesOrder'.
Invalid column name 'QtyOnBackOrder'.
Invalid column name 'UpdateDate'.
Invalid column name 'ReviewedBy'.
Invalid column name 'LEAD_TIME_WEEKS'.
Invalid column name 'Book'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Spider.Spider.UpdateWeb(String sConnString, String sTableName, String sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
at Spider.Spider.RunWebUpdate(SpiderLog log, Int32 numberOfAttempts)
-1 DNN6 Part Numbers successfully updated.
Attempt 2: Error updating new database (DNN7) - Line: 0 Incorrect syntax near '.'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Spider.Spider.UpdateWeb(String sConnString, String sTableName, String sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
at Spider.Spider.RunWebUpdate(SpiderLog log, Int32 numberOfAttempts)
-1 DNN7 Part Numbers successfully updated.
Error updating old database (DNN6) - Line: 0 Invalid column name 'WebEnabled'.
Invalid column name 'RohsCompliant'.
Invalid column name 'ConflictMinerals'.
Invalid column name 'Reach138Compliant'.
Invalid column name 'PartNumber'.
Invalid column name 'RohsCompliant'.
Invalid column name 'ConflictMinerals'.
Invalid column name 'Reach138Compliant'.
Invalid column name 'QtyOnHand'.
Invalid column name 'QtyOnSalesOrder'.
Invalid column name 'QtyOnBackOrder'.
Invalid column name 'UpdateDate'.
Invalid column name 'ReviewedBy'.
Invalid column name 'LEAD_TIME_WEEKS'.
Invalid column name 'Book'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Spider.Spider.UpdateWeb(String sConnString, String sTableName, String sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
at Spider.Spider.RunWebUpdate(SpiderLog log, Int32 numberOfAttempts)
-1 DNN6 Part Numbers successfully updated.
Attempt 3: Error updating new database (DNN7) - Line: 0 Incorrect syntax near '.'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Spider.Spider.UpdateWeb(String sConnString, String sTableName, String sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
at Spider.Spider.RunWebUpdate(SpiderLog log, Int32 numberOfAttempts)
-1 DNN7 Part Numbers successfully updated.
Error updating old database (DNN6) - Line: 0 Invalid column name 'WebEnabled'.
Invalid column name 'RohsCompliant'.
Invalid column name 'ConflictMinerals'.
Invalid column name 'Reach138Compliant'.
Invalid column name 'PartNumber'.
Invalid column name 'RohsCompliant'.
Invalid column name 'ConflictMinerals'.
Invalid column name 'Reach138Compliant'.
Invalid column name 'QtyOnHand'.
Invalid column name 'QtyOnSalesOrder'.
Invalid column name 'QtyOnBackOrder'.
Invalid column name 'UpdateDate'.
Invalid column name 'ReviewedBy'.
Invalid column name 'LEAD_TIME_WEEKS'.
Invalid column name 'Book'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Spider.Spider.UpdateWeb(String sConnString, String sTableName, String sPrimaryColModifier, AddPrimaryIndexHandler addPrimaryIndexColumn, FindRowByIndexHandler findRowByIndex)
at Spider.Spider.RunWebUpdate(SpiderLog log, Int32 numberOfAttempts)
-1 DNN6 Part Numbers successfully updated.
難道這是錯誤?
string masSelect = @"SELECT CI_Item.ItemCode, CI_Item.UDF_ROHS, CI_Item.UDF_CONFLICT_MINERALS, CI_Item.UDF_REACH138, CI_Item.UDF_CUSTOMER_LEAD_TIME, IM_ItemWarehouse.QuantityOnHand, IM_ItemWarehouse.QuantityOnSalesOrder, IM_ItemWarehouse.QuantityOnBackOrder, CI_Item.Category1
FROM CI_Item, IM_ItemWarehouse
WHERE (CI_Item.ItemCode = IM_ItemWarehouse.ItemCode) AND (CI_Item.EBMEnabled = 'Y') AND (IM_ItemWarehouse.WarehouseCode = '001')";
我在選擇語句的末尾有CI_Item.Category1嗎?
發佈錯誤...... –
它不是,它不是編譯它不是更新該行生病後的錯誤信息持有.. – user3284507
你有一個語法錯誤。 – Max