C# 查询及显示问题

zk716 2017-09-13 03:43:20
各位大大,我是新手先碰到查询和显示的问题,求教大大们。
想通过一个datagirdview控件显示要查询的类容,datagridview1控件的行是不固定的根据需求选择,选择好后再根据显示的第一列里的值去查询数据库里对应的数据。然后显示在另外一个datagridview2控件里面。比如说我现在库里tagname字段有7个数据,我只选择了三个数据出来需要查询如下图:

原表查询出来的结果为下图:

然后想在另一个datagridview里显示为下图:

在通过datagridview1里的第一列里的值去查询数据库时报错,代码如下:
private void button3_Click(object sender, EventArgs e)
{
string ids = string.Empty;
System.Collections.ArrayList s1 = new System.Collections.ArrayList();
for (int i = 0; i < dataGridView2.Rows.Count; i++)//循环dataGridView2的行
{
s1.Add(dataGridView2.Rows[i].Cells[0].Value.ToString());//将dataGridView2中的第一列存入s1中
}
foreach(string a in s1)
{

   ids=ids+a+",";

}
ids = ids.Trim(',');

/* for (int j = 0; j < s1.Count; j++)
{
if (j != s1.Count - 1)
{
strlj += s1[j].ToString() + ",";
}
else
strlj += s1[j].ToString();
}

*/
string cmdstr = "select tagname,timestamp,value from ihRawData where tagname in " + ids + " and intervalmilliseconds=1h and timestamp between '2017/9/11 10:00:00' and '2017/9/11 14:00:00'";

OleDbConnection conn = ConectOleDb.CreateConnection();
OleDbDataAdapter adap = new OleDbDataAdapter(cmdstr, conn);
DataSet ds = new DataSet();
adap.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
//dataGridView1.Columns[1].DefaultCellStyle.Format = "yyyy-MM-dd HH:mm:ss";
}
错误信息图片为下图:

...全文
255 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zk716 2017-09-14
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
[quote=引用 6 楼 zk716 的回复:] 没办法是一个工业实时库,只能提供OleDB。
源代码也没有么? 如果有源代码,如果使用的“正巧是”SQL Server,那么使用 OleDB 还是 SqlDB 那是你们自己的问题(连接串是共同的)。不尝试技术,这就是不是别人的问题。 从你的代码来看,不过就是使用 ADO.net 创建了数据库连接,然后使用 DbAdapter 进行查询返回 DataSet,不过这么2、33行代码需要改变。那么修改一下,应该不是什么做不了的难事儿。[/quote] 这个工业库只提供了iHistorian OLE DB,用SQLDB是没办法连接的。
  • 打赏
  • 举报
回复
引用 6 楼 zk716 的回复:
没办法是一个工业实时库,只能提供OleDB。
源代码也没有么? 如果有源代码,如果使用的“正巧是”SQL Server,那么使用 OleDB 还是 SqlDB 那是你们自己的问题(连接串是共同的)。不尝试技术,这就是不是别人的问题。 从你的代码来看,不过就是使用 ADO.net 创建了数据库连接,然后使用 DbAdapter 进行查询返回 DataSet,不过这么2、33行代码需要改变。那么修改一下,应该不是什么做不了的难事儿。
zk716 2017-09-14
  • 打赏
  • 举报
回复
没办法是一个工业实时库,只能提供OleDB。
  • 打赏
  • 举报
回复
如果是 sql server(或者 oracle 之类的),就用相应的具体的 ado.net 类库来操作。不要用 OleDbXXXXX。比如说你的 ids 字符串内容的语法格式根本不对,相信 SqlDBXXXX 等等类库会给你的 .net 程序返回更加准确的异常信息(数据库系统发送回来的异常信息),而不是崩溃。
  • 打赏
  • 举报
回复
什么数据库啊?为什么用 OleDBXXXX 来操作啊?
sj490790083 2017-09-13
  • 打赏
  • 举报
回复
连接字符串有没有问题,拿拼接出来的sql语句去数据库运行下试试
qq_40226215 2017-09-13
  • 打赏
  • 举报
回复
放弃控件吧...........mvc 一样直接写html代码吧....
清澈的风 2017-09-13
  • 打赏
  • 举报
回复
先去桌面用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接) 然后再打开vs运行调试看一看,我之前出现过这个问题,然后这样解决了,不知道你的问题可以不

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧