怎样在SQL server 2005 的表中插入图片字段为无效值怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样在SQL server 2005 的表中插入图片字段为无效值怎么办相关的知识,希望对你有一定的参考价值。

private void button2_Click(object sender, System.EventArgs e)

try

System.IO.FileInfo fs = new System.IO.FileInfo(this.filename);
if (!fs.Exists)

MessageBox.Show("无效的文件名!");
return;

//创建一字节数组,用来存储图像文件.(数组的长度是图像文件的长度)
byte[] Content=new byte[fs.Length];
//打开文件并用他初始化一个文件流对象
FileStream ImageFileStream=fs.OpenRead();
//将文件内容写入字节数组
ImageFileStream.Read(Content,0,Content.Length);
//关闭文件流
ImageFileStream.Close();

//创建一个Sql命令对象,用来插入记录
System.Data.OleDb.OleDbCommand mycmd = new System.Data.OleDb.OleDbCommand(updatesql,DB.OleConn());
mycmd.CommandType = CommandType.StoredProcedure;
mycmd.Parameters.Add("@image",System.Data.OleDb.OleDbType.VarBinary);
mycmd.Parameters.Add("@bh",OleDbType.VarChar,20);

mycmd.Parameters["@image"].Value = Content;
mycmd.Parameters["@bh"].Value =bh;

//打开数据库连接
if (mycmd.Connection.State!=ConnectionState.Open)

mycmd.Connection.Open();

//执行 Sql 语句
mycmd.ExecuteNonQuery();
//关闭数据库连接
mycmd.Connection.Close();

MessageBox.Show("图像文件 " + fs.FullName + " 成功上传到数据库!");
this.filename ="";
myds.Tables[0].Clear();
myda.Fill(myds,"A");
//mybind.Position =0;
//this.Showimage();

catch (Exception ex)

MessageBox.Show(ex.Message);


this.button2.Enabled = false;
参考技术A 。。。。该字段类型是什么,image????那是二进制的本回答被提问者和网友采纳

插入前Microsoft SQL Server转换中的存储过程

我正在尝试创建一个存储过程,在插入到我的表之前对传入的参数进行操作。我的表中的一个列叫做DATE_CHANGED,基本上我在这里要做的就是将传递的日期参数更改为2017年12月1日到20171201.这是一个int值。

我写了一个这样的存储过程:

CREATE PROCEDURE date_generate
     @startDate DATE
AS
BEGIN
    DECLARE @DATE_KEY INT

    @DATE_KEY = CONVERT(INT, FORMAT(@startDate, 'YYYYMMDD')

    INSERT INTO table date_key = @DATE_KEY
END

但是我收到了一个错误

'@DATE_KEY附近的语法不正确

声明的局部变量仅用于SQL查询语句

select * 
from table 
where date_key = @DATE_Key?
答案

有多个错误。

  • 使用SET为变量赋值。
  • 看看INSERT语句也是如此。

    CREATE PROCEDURE date_generate
    @startDate date
    AS
    BEGIN
        DECLARE @DATE_KEY int;
        SET @DATE_KEY = CONVERT(int, format(@startDate, 'YYYYMMDD'));
        INSERT INTO DATE_CHANGED (date_key) 
        VALUES (@DATE_KEY);
    END
另一答案

这看起来很奇怪。你甚至不需要局部变量。根据您的代码,您可以写:

create procedure date_generate (
    @startDate date
) as
begin
    insert into table (date_key)
        values ( convert(int, format(@startDate, 'YYYYMMDD')) );
end;  -- date_generate

或者,我可能会写:

create procedure date_generate (
    @startDate date
) as
begin
    insert into table (date_key)
        values ( year(@startDate) * 10000 + month(@startDate) * 100 + day(@startDate) );
end;

为什么你会在每一行上都有一个单独日期的表对我来说没有意义。为什么你将“日期”存储为整数也没有意义。

另一答案

据我所知,您的存储过程接受DATE作为参数,但您需要使用INT进行INSERT。

您可以通过以下方式轻松地将DATE转换为VARCHAR,然后转换为INT:

DECLARE @DateASInt INT = CAST(CONVERT(VARCHAR(8), @startDate, 112) AS INT);

所以,你的存储过程将是这样的:

CREATE PROCEDURE date_generate
    @startDate date
    AS
    BEGIN
        INSERT INTO date_key
            VALUES (CAST(CONVERT(VARCHAR(8), @startDate, 112) AS INT));
    END

以上是关于怎样在SQL server 2005 的表中插入图片字段为无效值怎么办的主要内容,如果未能解决你的问题,请参考以下文章

更新 SQL Server 2005 中的表列

Sql Server 2005 - 插入更新触发器 - 获取更新,插入行

在SQLserver 2000中的表中取出一列,显示在一个gridview中,当表中该列数值为1时显示一张图片,

sql server 怎样用SQL语句查询一个数据库中的所有表?

SQL server 2005如何设置一个或几个字段唯一约束?

在SQL SERVER 的表中,插入新的字段