0

我将图片路径插入数据库,当我得到路径时,我用img标签显示它们。

我可以做到,但我找不到在 sql 查询之后必须编写的方法。

sql查询后我必须写什么?

Page_Load我的选择命令中有效。

 c = new Common(ConfigurationManager.ConnectionStrings["ahapp"]);
    string sql = "select Query";
    string str = "";
    DataTable dt = c.GetDataTable(sql);
    foreach (DataRow item in dt.Rows)
    {
        str += "<img src='" + item["path"].ToString() + "' style='width:100px' />";
    }

    dokList.InnerHtml = str; 

这段代码总是说: 在此处输入图像描述

 sql ="INSERT INTO DR_OZLUK VALUES(3," + ddlDoktor.SelectedValue + "," + belgeid + ",3," + str + ",1)";
    SqlCommand cmd = new SqlCommand(sql, c);
    cmd.ExecuteNonQuery();
4

6 回答 6

2

您的c对象似乎不是 SqlConnection 类型。那个普通班是什么?SqlCommand接受两个参数。第一个是字符串,它可以是 sql 语句或存储过程的名称,另一个参数是 SqlConnection 类型的对象。

于 2013-04-10T06:50:31.313 回答
2

insert 语句容易受到 sql 注入的攻击,但问题与 sql 语句无关。问题是您在Objection中传递Common类而不是Connection对象。SqlCommand

试试这个代码片段:

string connStr = "connection string here";
string sqlStatement = "INSERT INTO DR_OZLUK VALUES (3, @val1, @val2, 3, @val3, 1)";
using (SqlConnection conn = new SqlConnection(connStr))
{
    using(SqlCommand comm = new SqlCommand())
    {
        comm.Connection = conn;
        comm.CommandText = sqlStatement;
        comm.CommandType = CommandType.Text;

        comm.Parameters.AddWithValue("@val1", ddlDoktor.SelectedValue);
        comm.Parameters.AddWithValue("@val2", belgeid);
        comm.Parameters.AddWithValue("@val3", str);

        try
        {
            conn.Open();
            comm.ExecuteNonQuery();
        }
        catch(SqlException e)
        {
            // do something with the exception
            // do not hide it
            // e.Message.ToString()
        }
    }
}

为了正确编码

  • using用于 propr 对象处理的use语句
  • 使用try-catch块来正确处理对象
于 2013-04-10T06:50:37.390 回答
0

我认为 c 应该是连接对象

c = new Common

您正在传递 c 代替连接对象。

创建对象的 SQLCommand 的签名是

public SqlCommand(
    string cmdText,
    SqlConnection connection
)

所以根据它,你的第二个参数必须是连接对象。这就是它给你一个错误的原因。您正在传递 Common 类对象来创建命令对象。visi MSDN 链接以获取更多信息:http: //msdn.microsoft.com/en-us/library/877h0y3a.aspx

于 2013-04-10T06:52:17.017 回答
0

您的 c 不是 aSqlConnection或者您的 IDE 有另一个与您粘贴的错误混淆的错误。有时 VS2010 在显示错误时会损坏。

于 2013-04-11T11:00:21.323 回答
0
    Or try this, this sample code is very secure and 100% works any time, you can copy paste it but u must put your connection string and table 

    string connectionStr = "connection string STRING";
    string sqlQuery = "INSERT INTO yourtable VALUES (ID, @pam1, @pam2)";
    ///// Go to Base and execute Query but with trycatch because if you have problem with using connection it will tell you

    try{

    using (SqlConnection conn = new SqlConnection(connStr))
    {
        using(SqlCommand komand = new SqlCommand(conn,sqlQuery)) //command to use connection and Sqlquery

    string fromcontrol = "test"; //this is string just for test

            komand.Parameters.AddWithValue("@pam1", fromcontrol.ToString());
            komand.Parameters.AddWithValue("@val2", fromcontrol.ToString());

                conn.Open();
                komand.ExecuteNonQuery();
            }
            catch(SqlException e)
            {
    //throw your execption to javascript  or response; e.Message.ToString() + "SQL connection or query error"; 
            }

    catch(Exception ex)
    {
    //throw your execption to javascript  or response; e.Message.ToString()+ "system error"; 
    }

finally
{
conn.Close();
conn.Dispose();
}

        }
    }
于 2013-04-11T20:07:54.313 回答
0

谢谢大家。我找到了解决方案。我添加了这段代码c.GetExecuteNonQuery(sql);并使 c 成为全局的。

于 2013-04-12T07:07:31.393 回答