1

私のコード

string query = @"INSERT INTO representative_dev.representative_users
                                (Username, Password, FullName, 
                                HomePhone, PhoneToCall, 
                                CompanyEmail, PersonalEmail, 
                                IsManager) 
                            VALUES (@Username, @Password, @FullName, 
                                    @HomePhone, @PhoneToCall,
                                    @CompanyEmail, @PersonalEmail, 
                                    @IsManager);";
            mycon.Open();
            int cnt = mycon.Execute(query,
                new
                {
                    txtUsername,
                    txtPassword,
                    txtFullName,
                    txtHomePhone,
                    txtPhoneToCall,
                    txtCompanyEmail,
                    txtPersonalEmail,
                    cbxIsManager
                });
            mycon.Close();

「コマンドの実行中に致命的なエラーが発生しました」と表示されます。

別のケースで別の挿入クエリを実行すると、うまく機能します。違いは、ここでは cbxIsManager を bool として持ち、db には tinyint(1) があり、他のケースではすべてが文字列であることです。

「Allow User Variables=true;」を追加すると それから私は例外を取得しませんが、データベースではすべての値がnullです(彼が値を取得することを確認しました)

このプロジェクトでASP.NETを使用し、他のコンソールで、両方ともFW4で、mysqlは6.何か(3を考えてください)他のコードです

        string query = @"INSERT INTO representative_dev.potencial_contact
                    (Name, Company_ID, Phone, Email, Department, Notes, SuperFriend, UpdateDate) 
                    VALUES (@Name, @Company_ID, @Phone, @Email, @Department, @Notes, @SuperFriend, @UpdateDate);";
        mycon.Open();
        int cnt = mycon.Execute(query,
            new
            {
                con.Name,
                con.Company_ID,
                con.Phone,
                con.Email,
                con.Department,
                con.Notes,
                con.SuperFriend,
                con.UpdateDate
            });
        mycon.Close();

任意の助けをいただければ幸いです

thx、アリエル

編集:これはいつ機能しましたか

            string query = @"INSERT INTO representative_dev.representative_users
                                (Username, Password, FullName, 
                                HomePhone, PhoneToCall, 
                                CompanyEmail, PersonalEmail, 
                                IsManager) 
                            VALUES ('" + txtUsername + @"', '" + txtPassword + @"', '" + txtFullName + @"', 
                                    '" + txtHomePhone + @"', '" + txtPhoneToCall + @"',
                                    '" + txtCompanyEmail + @"', '" + txtPersonalEmail + @"', 
                                    " + cbxIsManager + ");";

            int cnt = mysql.ExecuteInsert(query);

私はdapperを使いたいので、まだ助けを求めています....

4

2 に答える 2

0

@s をsに置き換えてみてください:。それは私のために働くように見えました:

string query = @"INSERT INTO representative_dev.representative_users 
                 (Username, Password, FullName, HomePhone, PhoneToCall, CompanyEmail,
                  PersonalEmail, IsManager) VALUES (:Username, :Password, :FullName,
                  :HomePhone, :PhoneToCall, :CompanyEmail, :PersonalEmail, :IsManager);";
于 2016-01-07T23:40:27.957 に答える
0

次のようなことを試してください:

public class RepresentativeUser
{
    public string UserName { get; set; }
    public string Pasword { get; set; }
    //etc
    public int IsManager { get; set; }
}

public void InsertRepresentativeUser(RepresentativeUser representativeUser)
{
    const string query = @"INSERT INTO representative_dev.representative_users
                        (Username, Password, 
                        IsManager) 
                    VALUES (@Username, @Password,
                            @IsManager);
                    select count(*) from representative_dev.representative_users";

    var count = DbConnection.Query<decimal>(query,
        new
        {
            representativeUser.UserName,
            representativeUser.Pasword,
            representativeUser.IsManager
        });
}

主な変更点は、Query<> 拡張と Execute を使用することです。Execute は結果を返さないので、"int cnt = mycon.Execute(query,".

また、クエリをメソッドにラップしました。これで、クライアントは挿入する新しい RepresentativeUser を送信するだけで済みます。このようにして、データ型を制御することもできます。

お役に立てれば。幸運を

于 2012-08-28T16:37:48.440 に答える