Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySql参数语句c rest web服务_C#_Mysql_Rest - Fatal编程技术网

C# MySql参数语句c rest web服务

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

我在休息服务方面有问题。我试图发布一个对象,但它给了我一个错误:

KnjiznicaStoritev.dll中发生“System.FormatException”类型的异常,但未在用户代码中处理

其他信息:输入字符串的格式不正确

这是我的密码:

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);