问个sql菜鸟问题

问题描述

环境:vb2005xp(win7)数据库:access表名:Dat字段:a(string类型),b(int类型),c(date类型),d(OLE类型)对应变量:strA,intB,dateC,oleD,strA=“ABC的”intB=50dateC=2016-03-0315:16:15oled=一个数组,数组内容为byte类型数据我要向这个表插入数据,sql语句如下InsertintoDat(a,b,c,d)values(问题在这里:这里怎么写???)'"+strA+"','"&intB&"','"+dateC+"','"+这里怎么写?+"')"是这样么?其实就是连接符问题文本类型连接符是+?数字类型连接符是&?日期时间类型连接符是+?OLE类型连接符是??如果能按我举得例子给我写下具体的SQL语句哪就更好了:)

解决方案

解决方案二:
不能拼sql字符串,应该用参数化sql:OleDbConnectioncn=newOleDbConnection("连接字符串");OleDbCommandcmd=newOleDbCommand("insertintoDat(a,b,c,d)values(?,?,?,?)",cn);cmd.Parameters.AddWithValue("?",strA);cmd.Parameters.AddWithValue("?",intB);cmd.Parameters.AddWithValue("?",dateC);cmd.Parameters.AddWithValue("?",oled);cn.Open();cmd.ExecuteNonQuery();cn.Close();
解决方案三:
引用1楼dalmeeme的回复:

不能拼sql字符串,应该用参数化sql:OleDbConnectioncn=newOleDbConnection("连接字符串");OleDbCommandcmd=newOleDbCommand("insertintoDat(a,b,c,d)values(?,?,?,?)",cn);cmd.Parameters.AddWithValue("?",strA);cmd.Parameters.AddWithValue("?",intB);cmd.Parameters.AddWithValue("?",dateC);cmd.Parameters.AddWithValue("?",oled);cn.Open();cmd.ExecuteNonQuery();cn.Close();

你好,你这个方法中在cmd.ExecuteNonQuery()这句时会出错,我除去cmd.Parameters.AddWithValue("?",oled);这句的话,就会正常,是不是不能直接将byte类型数组存放至access的ole类型字段内?我在vb6下用的是这样的方法:OpenApp.Path+"wen.txt"ForBinaryAccessReadAs1#l=LOF(1#)'Debug.PrintlReDimBuf(l)AsByteGet1#,,BufClose1#DatWenDu.Recordset.Fields("温度")=Buf

在vb2005中我不清楚该怎么改写这段程序了?可否解释下?多谢
解决方案四:
抛出什么异常信息?
解决方案五:
引用3楼dalmeeme的回复:

抛出什么异常信息?

标题为:未处理oleDbException内容为:多步OLEDB操作产生错误。如果可能,请检查每个OLEDB状态值,没有工作被完成
解决方案六:
你的byte数组里装的什么东西?有可能是你的byte[]太大了,长度超过该字段的限制,
解决方案七:
引用5楼dalmeeme的回复:

你的byte数组里装的什么东西?有可能是你的byte[]太大了,长度超过该字段的限制,

目前我自己做的例子里,是64个数据,温度数据,每个数据都是15.3类似这样的数据。我原来VB6用的那种分块,保存的方法,在2005中不能用么?
解决方案八:
我这里测试存入一个文件到数据库中是没问题的,不知道你为什么不行。
解决方案九:
引用7楼dalmeeme的回复:

我这里测试存入一个文件到数据库中是没问题的,不知道你为什么不行。

问题可能出在这里,你是怎么吧一个文件读到变量里再保存到数据库的?我是直接保存这个数组,结果出错了。
解决方案十:
byte[]values=File.ReadAllBytes(@"c:a.txt");//读取文件到values......cmd.Parameters.AddWithValue("?",values);//添加第三个参数,并指定它的值是values
解决方案十一:
引用9楼dalmeeme的回复:

byte[]values=File.ReadAllBytes(@"c:a.txt");//读取文件到values......cmd.Parameters.AddWithValue("?",values);//添加第三个参数,并指定它的值是values

太感谢你了。按照这个方法我已经保存进去了。可以再问下,我怎么从数据库中取出这个OLE数据么?取出后怎么还原成原来的数组格式?
解决方案十二:
引用10楼LIXIYO的回复:

Quote: 引用9楼dalmeeme的回复:
byte[]values=File.ReadAllBytes(@"c:a.txt");//读取文件到values......cmd.Parameters.AddWithValue("?",values);//添加第三个参数,并指定它的值是values

太感谢你了。按照这个方法我已经保存进去了。可以再问下,我怎么从数据库中取出这个OLE数据么?取出后怎么还原成原来的数组格式?

我现在用的笨办法是,倒着推回去dimRedFile()asbyteFile.WriteAllBytes(Application.StartupPath+"wen2.txt",RedFile)这样把数据再保存到一个文本文件里,然后再读取出来到数组内。不知道有没有更方便的方法?
解决方案十三:
引用10楼LIXIYO的回复:

Quote: 引用9楼dalmeeme的回复:
byte[]values=File.ReadAllBytes(@"c:a.txt");//读取文件到values......cmd.Parameters.AddWithValue("?",values);//添加第三个参数,并指定它的值是values

太感谢你了。按照这个方法我已经保存进去了。可以再问下,我怎么从数据库中取出这个OLE数据么?取出后怎么还原成原来的数组格式?

OleDbCommandcmd=newOleDbCommand("selectdfromDatwhere条件",cn);cn.Open();byte[]values=(byte[])cmd.ExecuteScalar();

以上是取满足指定条件的一条记录的d字段的值,还原成byte[]。
解决方案十四:
直接ORM吧http://pwmis.codeplex.com

时间: 2024-10-01 12:38:31

问个sql菜鸟问题的相关文章

server-JSP菜鸟问连接SQL SERVER 2008的问题

问题描述 JSP菜鸟问连接SQL SERVER 2008的问题 JSP代码 <%@ page contentType="text/html;charset=utf-8"%> <%@ page import="java.sql.*"%> <% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url=&

在Linux 下 访 问MS SQL Server 数 据 库(转载)

server 宁 波 保 税 区 官 委 会 计 算 中 心 董 保 华 ---- Linux 作 为 一 个 免 费 的Unix 类 操 作 系 统, 以 其 开 放 性 源 代 码. 多 任 务.X window 等 特 点 为 众 多 的 用 户 所 采 用, 并 有 很 多 企 业 采 用Linux 来 作 为 其 内 部 网 的 全 功 能 服 务 器(WWW,FTP,Email.DNS). 企 业 的 内 部 网 不 仅 要 提 供 文 本 信 息 的 访 问, 还 要 能 提 供

数据库-新人求问关于sql语句的问题

问题描述 新人求问关于sql语句的问题 alter table 数据类型 add constraint check6 check (范围>'0' and 范围<'100') 执行的时候提示错误说:"消息 547,级别 16,状态 0,第 1 行 ALTER TABLE 语句与 CHECK 约束"check6"冲突.该冲突发生于数据库"数据",表"dbo.数据类型", column '范围'. 解决方案 关于sql 语句的求孤

数据库-新手求问,sql中用户对某一视图权力撤回后,要删除该视图吗

问题描述 新手求问,sql中用户对某一视图权力撤回后,要删除该视图吗 新手求问,sql中用户对某一视图权力撤回后,要删除该视图吗.如图所示,题目是撤回杨兰所授予的权力

max()-问一个sql问题,hour()获取日期的小时,然后给他赋值最大值,但是为什么出错了

问题描述 问一个sql问题,hour()获取日期的小时,然后给他赋值最大值,但是为什么出错了 hour(stat_time)=max(hour(stat_time))提示Invalid use of group function 解决方案 hour(stat_time)这个只能是获取,不能赋值 解决方案二: hour(stat_time)只是获取日期的小时,不能赋值的 解决方案三: 这样 stat_time = select max(hour(stat_time))

新浪爱问存在SQL注入漏洞

摘要: 瑞星指新浪7000万密码泄漏(腾讯科技配图) 1月5日消息,国内安全机构瑞星今日发布安全预警,指出席卷互联网的泄密门出现新紧张,新浪爱问存在SQL注入漏洞,大约7000万明文存储的密码 瑞星指新浪7000万密码泄漏(腾讯科技配图) 1月5日消息,国内安全机构瑞星今日发布安全预警,指出席卷互联网的"泄密门"出现新紧张,新浪爱问存在SQL注入漏洞,大约7000万明文存储的密码已外泄. 有安全黑客对著名魔术师刘谦微博进行尝试性攻击,取得成功,刘谦得知此事后在微博上连呼"太恐

sql-询问一个SQL如何实现判断查询的问题

问题描述 询问一个SQL如何实现判断查询的问题 这是我现在的语句 strSql2.Append("SELECT a.SystemContractID, a.Income, a.TotalMargin, a.UserCode,a.StrategyID, b.StrategyName FROM OrderProfit_History as a INNER JOIN Strategy as b ON a.StrategyID = b.StrategyID"); OrderProfit_His

sql server-请问在SQL SERVER里,有两个表的查询问题怎么解决

问题描述 请问在SQL SERVER里,有两个表的查询问题怎么解决 一个teacher表,一个stu_info表,现在要查询teacher表中每个教师教师名和的学生数 解决方案 join一下 select t.name, count(s.teacherid) from teachers t join stu_info on t.id = stu_info.teacherid where s.teacherid=t.name 解决方案二: SELECT tearcher.name, COUNT(

问一个 sql拼接执行的问题

问题描述 今天回过头来看这个语句,感觉一些迷惑--动态SQL,指一个公司的值个数不定.declare@sqlvarchar(8000)set@sql='selectm.code,m.name'这里作为一个字符串select@sql=@sql+',max(casepxwhen'''+cast(pxasvarchar)+'''thenlinknameelse''''end)[linkname'+cast(pxasvarchar)+']'from(selectdistinctpxfrom(select