首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OleDbDataAdapter字符串级联

OleDbDataAdapter字符串级联
EN

Stack Overflow用户
提问于 2014-06-16 06:45:01
回答 2查看 840关注 0票数 1

我有下面的代码,它对一个database.If执行一个简单的SELECT查询--我通过" group“字符串传递整个查询,如果我试图连接字符串(只发送组ID),则查询是OK.But,因为我得到了”查询表达式'ID='group_data‘中的语法错误“-note the three’

我在MSDN上找到了一个高峰,但是我找不到任何与它相关的东西。

代码语言:javascript
复制
public void auth_st(string group)
    {
        conexiuneBD.Open();
        DataSet ds = new DataSet();
        OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT Notif FROM teams WHERE ID='"+group+"'", conexiuneBD);
        adapter.Fill(ds);
        conexiuneBD.Close();

        DataTable dt = ds.Tables[0];
        foreach (DataRow dr in dt.Rows)
        {
            listBoxCerer.Items.Add(dr["Notif"].ToString());

        }

    }

任何帮助实际上都是appreciated.Should,我使用命令来代替?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-16 07:42:09

字符串连接是非常糟糕,您应该以这种方式使用OleDB参数

代码语言:javascript
复制
public void auth_st(string group)
{
    conexiuneBD.Open();
    DataSet ds = new DataSet();
    OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT Notif FROM teams WHERE ID=?", conexiuneBD);
    adapter.SelectCommand.Parameters.AddWithValue("p1", group);
    adapter.Fill(ds);
    conexiuneBD.Close();

    DataTable dt = ds.Tables[0];
    foreach (DataRow dr in dt.Rows)
    {
        listBoxCerer.Items.Add(dr["Notif"].ToString());
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-06-16 06:48:27

代码语言:javascript
复制
public void auth_st(string group)
{
    string query="SELECT Notif FROM teams WHERE ID='{0}'";
    conexiuneBD.Open();
    DataSet ds = new DataSet();
    OleDbDataAdapter adapter = new OleDbDataAdapter(string.Format(query,group), conexiuneBD);
    adapter.Fill(ds);
    conexiuneBD.Close();

    DataTable dt = ds.Tables[0];
    foreach (DataRow dr in dt.Rows)
    {
        listBoxCerer.Items.Add(dr["Notif"].ToString());

    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24237944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档