相关疑难解决方法(0)

使用c#中的参数调用存储过程

我可以在我的程序中执行删除,插入和更新,并尝试通过从我的数据库中调用创建的存储过程来执行插入操作.

这个按钮插件我工作得很好.

private void btnAdd_Click(object sender, EventArgs e)
{
        SqlConnection con = new SqlConnection(dc.Con);
        SqlCommand cmd = new SqlCommand("Command String", con);

        da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con);
        da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
        da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;

        con.Open();
        da.InsertCommand.ExecuteNonQuery();
        con.Close();

        dt.Clear();
        da.Fill(dt);
    } 
Run Code Online (Sandbox Code Playgroud)

这是调用名为sp_Add_contact添加联系人的过程的按钮的开始.这两个参数sp_Add_contact(@FirstName,@LastName).我在谷歌搜索了一些很好的例子,但我没有发现任何有趣的东西.

private void button1_Click(object sender, EventArgs e)
{
        SqlConnection con = new SqlConnection(dc.Con);
        SqlCommand cmd = new SqlCommand("Command String", con);
        cmd.CommandType = CommandType.StoredProcedure;

        ???

        con.Open();
        da. ???.ExecuteNonQuery();
        con.Close();

        dt.Clear();
        da.Fill(dt);
    }
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net ado.net stored-procedures

132
推荐指数
3
解决办法
57万
查看次数

与Parameters.Add和Parameters.AddWithValue的区别

基本上CommandsParameters和参数有像Add,AddWithValue等等的功能.在我看过的所有教程中,我通常注意到他们正在使用Add而不是AddWithValue.

.Parameters.Add("@ID", SqlDbType.Int)
Run Code Online (Sandbox Code Playgroud)

VS

.Parameters.AddWithValue("@ID", 1)
Run Code Online (Sandbox Code Playgroud)

有没有理由不使用AddWithValue?我宁愿用那个

Parameters.Add("@ID", SqlDbType.Int, 4).Value = 1
Run Code Online (Sandbox Code Playgroud)

因为它节省了我的编码时间.那么哪个更好用?哪个使用安全?它会提高性能吗?

.net c# vb.net ado.net

31
推荐指数
2
解决办法
4万
查看次数

Adapter.Fill需要很长时间

我已经以RadGrid编程方式创建了一个并使用NeedDataSource- > 绑定它GetDataTable.

在其中GetDataTable,我调用我的connstring并用适配器填充网格(参见下面的代码).问题是,在我的SQL Server中,查询需要0秒才能运行,但是在ASP.NET调试模式下,它需要大约3~5秒,在我的情况下,页面上有很多RadGrids,这导致我的页面加载缓慢.

这是adapter.Fill一般问题的处理速度还是我对设置做错了?(即conn.open/close或其他任何订单)?

public DataTable GetDataTable(int Year, int month, string datatype)
{
    String ConnString = ConfigurationManager.ConnectionStrings["IHG_MSTConnectionString"].ConnectionString;
    SqlConnection conn = new SqlConnection(ConnString);
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand("[Yield_Planner_With_Strategy]", conn);
    adapter.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;
    adapter.SelectCommand.Parameters.AddWithValue("@Holidex_Code", RadComboBox_Hotels.SelectedValue);
    adapter.SelectCommand.Parameters.AddWithValue("@Event_Year", Year);
    adapter.SelectCommand.Parameters.AddWithValue("@Event_Month", month);
    adapter.SelectCommand.Parameters.AddWithValue("@DataType", datatype);
    adapter.SelectCommand.Parameters.AddWithValue("@MktSeg", Fruitful.Get_Checked_Values_As_CSV(RadComboBox_MktSeg));

    string exportdate = DateTime.Now.ToString("yyyy/MM/dd");
    if (RadComboBox_ExportTimeStamp.Text != "" && RadComboBox_ExportTimeStamp.Text != "Create New Strategy")
    { exportdate = Convert.ToDateTime(RadComboBox_ExportTimeStamp.Text).ToString("yyyy/MM/dd"); }
    adapter.SelectCommand.Parameters.AddWithValue("@ExportTimeStamp", exportdate);

    DataTable myDataTable …
Run Code Online (Sandbox Code Playgroud)

c# asp.net

6
推荐指数
1
解决办法
2238
查看次数

C# boolean 需要为 SQL Server 转换为 bit,所以它需要是 1 而不是 True

我有一个数据类型的 C# 属性,bool当它被设置时,它变成了一个TrueFalse.

但是我需要它与类型的 SQL Server 表列匹配,bit以便将其保存为 1 或 0。

SQL Server 列:

StormOut bit
Run Code Online (Sandbox Code Playgroud)

C# 属性

public bool StormOut { get; set; }
Run Code Online (Sandbox Code Playgroud)

C# SQL 语句:

string querystring = "UPDATE tblSignOnOff SET StormOut = " + storm.StormOut + " WHERE id = 1902";
Run Code Online (Sandbox Code Playgroud)

否则当前 C# 中的 SQL 语句是

UPDATE tblSignOnOff 
SET StormOut = True 
WHERE id = 1902
Run Code Online (Sandbox Code Playgroud)

这导致错误:

无效的列名“真”。

c# sql-server type-conversion sqldatatypes

5
推荐指数
1
解决办法
1万
查看次数

AddWithValue sql注入安全吗?为什么?

我希望这是一个正确的问题,parameters.addwithvalue工作怎么样?我正在考虑防止SQL注入?我一直在Stackoverflow上看很多,很多人说"//反对sql注入".我一直在盲目地使用它,但现在我必须提交一份关于我的任务的文章,我需要解释为什么它是保护.我一直试图在MSDN上找到一些东西,找到了这个:

SQL注入但它使用了parameters.add.然后我读到他们替换.Add.AddWithValue,是真的吗?那么任何官员呢?

所以基本上,任何人都可以更好地搜索一些可以防止SQL注入的官方文书工作?或者可以告诉我它是如何工作的?

我不是想让你做我的工作,我只是找不到自己.

我这样使用它:

using (SqlConnection conn = new SqlConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
        conn.Open();
        String queryString = "DELETE FROM dbo.SecurityAccess WHERE Username = ' @Username ";
        cmd.CommandText = queryString;
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

c# sql

2
推荐指数
1
解决办法
5284
查看次数