1

接続オブジェクトと一部の ado.net 部分で、データへの挿入中にエラーが発生しました。まず、ここに私の PHP コーディング部分があります。ここでは、php コーディングを .net に変換します。

openConn();
//<user> slett <slettID>
if((sizeof($MessageArray)==3) && (strtolower($MessageArray[1])=='slett'))
 {

$user_id=$MessageArray[2];
if ((int)$user_id > 0)
{
    $username=$MessageArray[0];
    $QueryCheckMak = "SELECT COUNT(*) FROM XYZ WHERE id='$user_id'";
    $QueryCheckMak = odbc_exec($conn, $QueryCheckMak) or die("Query error");
    $user_number = odbc_result($QueryCheckMak, 1);

    if($user_number=="0")
    {
        $message_out = "SOME ERROR OUT ";
    }

以下のコーディングは、それを変換しようとする私の試みです。私は、部分のサイズと文字列を小文字の部分に正常に変換します。以下のコーディング部分は、ODBC接続を使用していますが、私の場合、SQLサーバー接続を訴えます

public partial class SeenSMS : System.Web.UI.UserControl
{

    public SqlConnection mycon;
    SqlConnection con = new SqlConnection(@"Data Source=DSOFT\DOMZ;Initial                 Catalog=Vilt;UserID=sa;Password=sa123");


    protected void Page_Load(object sender, EventArgs e)
    {
        string[] msg_arr = Request.QueryString["arr"].Split('|');

        if (!IsPostBack)
        {
            string Moose = Request.QueryString[1];
        }

        if (msg_arr != null)
        {
            if ((msg_arr.Length == 3) && (msg_arr[1].ToLower() == "slett"))

            {
                int user_id = Convert.ToInt32(msg_arr[2]); 

                if(user_id > 0)
                {
                    string username = msg_arr[0]; 

                    SqlDataReader rdr = null;
                    con.open();
                    SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM XYZ WHERE id='$user_id",con);

                    if(user_number =='0')
                       {
                     Response.WriteLine("ERROR");

                     // else part here
                    }

                }
            }


        }
    }
4

2 に答える 2

4

このタイプの構文を使用すると、usingブロックはスコープの最後にあるオブジェクトを自動的に破棄します

public partial class SeenSMS : System.Web.UI.UserControl
{
    string connectionString = "Data Source=DSOFT\DOMZ;Initial Catalog=Vilt;UserID=sa;Password=sa123";
    protected void Page_Load(object sender, EventArgs e)
    {
        ....       
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            using (SqlCommand command = new SqlCommand("SELECT COUNT(*) FROM TableName WHERE id='" +user_id +"', con))
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    response.Write(reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
                }
            }
        }
        ....
    }
}
于 2012-06-10T18:05:39.590 に答える
2

これを試して:

 SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM XYZ WHERE user_id=@user_id,con));
 oCmd.Parameters.AddWithValue("@user_id", user_id);

 int user_number = 0;                 
 con.open();
   using (SqlDataReader oReader = cmd.ExecuteReader())
            {                   
                while (oReader.Read())
                {
                   user_number =Convert.ToInt32(oReader["count"]);                                                           
                }
                myConnection.Close();
            }                   



           if(user_number == 0)
                   {
                 Response.WriteLine("ERROR");

                 // else part here
                }
于 2012-06-10T17:57:39.677 に答える