3

このコードを使用して、システムにこの値のフィールドが既に存在するかどうかを確認しようとしています

Dim adap As New MySqlDataAdapter
Dim sqlquery = "SELECT * FROM client WHERE code ='"+ TxtCode.Text +"'"
                Dim comand As New MySqlCommand()
                comand.Connection = con
                comand.CommandText = sqlquery
                adap.SelectCommand = comand
                Dim data As MySqlDataReader
                data = comando2.ExecuteReader()
                leitor.Read()
                If (data(3).ToString) = code Then
                    MsgBox("already exists", MsgBoxStyle.Information)
                    TxtCode.ResetText()
                    TxtCode.Focus()
                Else
                    Console.WriteLine(insert("INSERT INTO client (name, tel, code) VALUES ('" & name & "', '" & tel & "')"))
                    con.Close()
                End If
4

3 に答える 3

0

2 つの値を挿入していますが、入力に 3 つの値を指定しています

この行

"INSERT INTO client (name, tel, code) VALUES ('" & name & "', '" & tel & "')"

次のようなものでなければなりません

"INSERT INTO client (name, tel, code) VALUES ('" & name & "', '" & tel & "','" & code & "')"
于 2012-10-24T05:17:44.097 に答える
0

ここに私の解決策があります:

 public bool isPhoneInfo(string hashPhone)
    {
        using (MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(_connStrng))
        {
            MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "CALL SP_IS_PHONEINFO(?p_hashInfo);";
            cmd.Parameters.AddWithValue("?p_hashInfo", hashPhone);

            try
            {
                conn.Open();
                MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                while (dr.Read())
                {
                    string hashPhoneInfo = dr["hashPhone"].ToString();
                    if (!hashPhoneInfo.Equals(string.Empty))
                        return true;
                }
            }
            catch (MySqlException e)
            {
                System.Diagnostics.Debug.WriteLine("Error in : "+e);
            }
        }
        return false;

    }
于 2013-11-26T20:15:14.367 に答える
0

呼び出しましたが、コードを呼び出しleitor.Read()ていませんdata.Read()

また、クエリはSELECT * FROM client WHERE code = '1234'であるため、チェックする必要はありませんdata(3) == code。レコードが存在する場合、data.Read() は true になります

If data.Read() Then
   MsgBox("already exists", MsgBoxStyle.Information)
   TxtCode.ResetText()
   TxtCode.Focus()
Else
   Console.WriteLine(insert("INSERT INTO client (name, tel, code) VALUES ('" & name & "', '" & tel & "')"))
   con.Close()
End If

連結の代わりにパラメーターを使用することもお勧めします

  Dim sqlquery = "SELECT * FROM client WHERE code = @code"
  ...

  command.Parameters("@code", code); //this is safer

そしてあなたの挿入のために

 "INSERT INTO client (name, tel, code) VALUES (@name, @tel)"
于 2012-10-24T05:06:50.007 に答える