WCF Rest 서비스를 사용하여 Oracle 12c DB 내 휴일 테이블에 공휴일 목록을 삽입하려고합니다. 서비스를 실행할 때 오류가 발생하지 않지만 서비스를 실행할 때 데이터가 삽입되지 않습니다. 내 cmdStr 및 UpdateHoliday()에 문제가 있다고 생각합니다. 어떤 도움이라도 많이 받아 들여집니다. 감사.WCF Rest Service로 Json 개체 목록을 매개 변수로 가져옵니다.
IService1.cs
public interface IService1
{
[OperationContract()]
[WebInvoke(UriTemplate = "UpdateHoliday", ResponseFormat = WebMessageFormat.Json, Method = "POST")]
void UpdateHoliday(List<Holiday> Holidays);
}
[DataContract]
public class Holiday
{
[DataMember(Order = 0)]
public string HOLIDAY { get; set; }
[DataMember(Order = 1)]
public string DESCRIPTION { get; set; }
public List<Holiday> Holidays { get; set; }
}
public class ListofHoliday
{
[DataMember]
List<Holiday> Holidays { get; set; }
}
Service1.cs
public class Service1 : IService1
{
public void UpdateHoliday(List<Holiday> Holidays)
{
List<ListofHoliday> firstStringList = new List<ListofHoliday>();
string cmdStr = String.Format("INSERT INTO HOLIDAY (HOLIDAY, Description)" +
" VALUES('HOLIDAY','Description')");
foreach (var item in firstStringList)
{
(new DbHelper()).SqlExecute(cmdStr);
}
}
}
DbHelper.cs
class DbHelper
{
private static string ConnectionString
{
get
{
return System.Configuration.ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
}
}
public DataTable GetResultSet(string sql)
{
DataTable dt = new DataTable();
using (OracleDataAdapter da = new OracleDataAdapter(sql, ConnectionString))
{
da.Fill(dt);
}
return dt;
}
public void SqlExecute(string sql)
{
using (OracleCommand cmd = new OracleCommand(sql, new OracleConnection(ConnectionString)))
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
}
}
}
나는 마침내 그것이 작동되도록하는 방법을 발견 할 수 있었다. 변경 사항은 다음과 같습니다 : Service1.cs에게
public class Service1 : IService1
{
public void UpdateHoliday(List<Holiday> Holidays)
{
if (Holidays == null)
throw new ArgumentNullException("Holidays");
foreach (var item in Holidays)
{
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO HOLIDAY (HOLIDAY, DESCRIPTION) VALUES ");
sb.AppendFormat("('{0}', '{1}')",
item.HOLIDAY, item.DESCRIPTION);
//sb.AppendFormat(";");
(new DbHelper()).SqlExecute(sb.ToString());
}
}
}
오류 표시기가 있습니까? –
전혀 오류가 발생하지 않습니다. 내 Json 객체 목록을 보낸 후에는 "응답이 비어 있습니다."라는 메시지 만 표시됩니다. 그것이 효과가 있다면 기대되는 것입니다. : | – user5511576
서비스 운영 루프에서 무엇을하려고하는지 모르겠지만 그 코드로는 아무 것도 삽입되지 않습니다. 빈 목록을 만든 다음 반복하여 각 반복마다 동일한 값을 삽입합니다. 빈 목록을 평가하자 마자 for 루프가 중단됩니다. 그게 네가 예상했던거야? –