C# MySql参数语句c rest web服务
我在休息服务方面有问题。我试图发布一个对象,但它给了我一个错误: KnjiznicaStoritev.dll中发生“System.FormatException”类型的异常,但未在用户代码中处理 其他信息:输入字符串的格式不正确 这是我的密码:C# MySql参数语句c rest web服务,c#,mysql,rest,C#,Mysql,Rest,我在休息服务方面有问题。我试图发布一个对象,但它给了我一个错误: KnjiznicaStoritev.dll中发生“System.FormatException”类型的异常,但未在用户代码中处理 其他信息:输入字符串的格式不正确 这是我的密码: public void DodajKnjigo(Knjiga knjiga) { string connString = null; try { connString = "server=localhost;us
public void DodajKnjigo(Knjiga knjiga)
{
string connString = null;
try
{
connString = "server=localhost;userid=;password=;database=";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO knjiga (idKnjiga, naslov, leto_izdaje, st_strani, koda, status)"
+" VALUES (@idKnjiga, @naslov, @leto_izdaje, @st_strani, @koda, @status)";
comm.Parameters.Add("idKnjiga", System.Data.SqlDbType.Int).Value = knjiga.idKnjiga;
comm.Parameters.Add("naslov", System.Data.SqlDbType.VarChar).Value = knjiga.naslov;
comm.Parameters.Add("leto_izdaje", System.Data.SqlDbType.Int).Value = knjiga.leto_izdaje;
comm.Parameters.Add("st_strani", System.Data.SqlDbType.Int).Value = knjiga.st_strani;
comm.Parameters.Add("koda", System.Data.SqlDbType.VarChar).Value = knjiga.koda;
comm.Parameters.Add("status", System.Data.SqlDbType.VarChar).Value = knjiga.status;
conn.Open();
int dodanih = comm.ExecuteNonQuery();
if (dodanih > 0)
{
UriTemplateMatch match = WebOperationContext.Current.IncomingRequest.UriTemplateMatch;
UriTemplate template = new UriTemplate("/knjiga/{idKnjiga}");
Uri novaKnjigaUri = template.BindByPosition(match.BaseUri, knjiga.idKnjiga.ToString());
WebOperationContext.Current.OutgoingResponse.SetStatusAsCreated(novaKnjigaUri);
}
conn.Close();
}
catch (Exception)
{
throw;
}
}
这是我的发帖请求:
{
"idKnjiga": 7,
"naslov": "M Vaqqas",
"leto_izdaje": 1997,
"st_strani": 322,
"koda": "E50532",
"status": "Na izposojo"
}
我试图发布的类:
[DataContract(Namespace ="http://localhost:30366/knjige")]
public class Knjiga
{
[DataMember]
public int idKnjiga { get; set; }
[DataMember]
public string naslov { get; set; }
[DataMember]
public int leto_izdaje { get; set; }
[DataMember]
public int st_strani { get; set; }
[DataMember]
public string koda { get; set; }
[DataMember]
public string status { get; set; }
public Knjiga() { }
}
这是我的经营合同:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/knjiga", BodyStyle = WebMessageBodyStyle.Bare)]
void DodajKnjigo(Knjiga knjiga);
一些数据库信息:
我真的不明白为什么给我一个错误的格式错误
谢谢你的帮助 尝试如下修改您的捕获:
catch (Exception e)
{
Console.Write(e.Message);
Console.Write(e.StackTrace);
throw;
}
这将为您提供有关异常的更详细描述我终于找到了解决方案。这是这个参数语句中的问题。应该是这样的
comm.CommandText = "INSERT INTO knjiga (idKnjiga, naslov, leto_izdaje, st_strani, koda, status)"
+" VALUES (@idKnjiga, @naslov, @leto_izdaje, @st_strani, @koda, @status)";
comm.Parameters.AddWithValue("@idKnjiga", knjiga.idKnjiga);
comm.Parameters.AddWithValue("@naslov", knjiga.naslov);
comm.Parameters.AddWithValue("@leto_izdaje", knjiga.leto_izdaje);
comm.Parameters.AddWithValue("@st_strani", knjiga.st_strani);
comm.Parameters.AddWithValue("@koda", knjiga.koda);
comm.Parameters.AddWithValue("@status", knjiga.status);